Obsah:

Generovanie napätia pomocou ergometra: 9 krokov (s obrázkami)
Generovanie napätia pomocou ergometra: 9 krokov (s obrázkami)

Video: Generovanie napätia pomocou ergometra: 9 krokov (s obrázkami)

Video: Generovanie napätia pomocou ergometra: 9 krokov (s obrázkami)
Video: Возможна ли свободная энергия? Мы тестируем этот двигатель бесконечной энергии. 2024, November
Anonim
Generovanie napätia pomocou ergometra
Generovanie napätia pomocou ergometra
Generovanie napätia pomocou ergometra
Generovanie napätia pomocou ergometra
Generovanie napätia pomocou ergometra
Generovanie napätia pomocou ergometra

Vypracovanie projektu spočívalo v zostavení „hry“s cieľom pedálovať na ergometrickom bicykli pripojenom k generátoru a veži žiaroviek, ktoré sa aktivujú pri zvyšovaní otáčok motora - ku ktorému dochádza v dôsledku pedálovania bicykla. Systém bol založený na načítaní-prostredníctvom analógového portu Arduino Mega-generovaného okamžitého napätia, následnom prenose týchto údajov na Raspberry Pi 3 prostredníctvom sériovej komunikácie RX-TX a následnej aktivácii žiaroviek pomocou relé.

Krok 1: Materiály:

  • 1 malina Pi 3;
  • 1 Arduino Mega 2560;
  • 1 reléový štít s 10 relé 12 V;
  • 10 žiaroviek 127 V;
  • 1 bicykel Ergometer;
  • 1 elektrický stroj (generátor) 12 V;
  • Rezistory (1x1kΩ, 2x10kΩ);
  • 1 elektrolytický kondenzátor 10 µF;
  • 1 Zenerova dióda 5,3 V;
  • 1,5 mm kábel (červený, čierny, hnedý);
  • 1 veža z MDF s podporou pre 10 žiaroviek.

Krok 2: Diagram blokov systému:

Schéma systémových blokov
Schéma systémových blokov

Krok 3: Prevádzka systému:

Systém je založený na transformácii kinetickej energie generovanej pri bicyklovaní na elektrickú energiu zodpovednú za aktiváciu relé, ktoré zapnú žiarovky.

Napätie generované generátorom je načítané analógovým kolíkom Arduino a je odoslané cez RX-TX na Raspberry Pi. Aktivácia relé je úmerná generovanému napätiu - čím vyššie napätie, tým viac relé sa spustí a rozsvieti sa viac žiaroviek.

Krok 4: Mechanické aspekty

Mechanické aspekty
Mechanické aspekty

Aby sa mechanicky spojil generátor jednosmerného prúdu s bicyklom, musel byť pásový systém nahradený systémom používaným na bežných bicykloch (pozostávajúcim z korunky, reťaze a pastorka). K rámu bicykla bola privarená kovová platňa, aby bolo možné motor zaistiť skrutkami. Potom bol pastorok privarený k hriadeľu generátora tak, aby bolo možné umiestniť reťaz a prepojiť pedálový systém s generátorom.

Krok 5: Čítanie napätia:

Na čítanie napätia generátora pomocou Arduina je potrebné pripojiť kladný pól elektrického stroja na kolík A0 regulátora a záporný pól na GND - aby sa zabránilo tomu, že maximálne napätie generátora bude vyššie ako 5 V Medzi regulátor a generátor boli skonštruované a zapojené piny Arduino, napäťový filter s kondenzátorom 10 µF, odporom 1 kΩ a Zenerovou diódou 5,3 V. Firmvér načítaný v Arduine je veľmi jednoduchý a pozostáva iba z načítania analógového portu, vynásobenia hodnoty prečítanej konštantou 0,0048828125 (5/1024, tj. Napätia GPIO Arduina deleného počtom bitov jeho analógového portu) a odoslania premenná na Sériová - kód bude k dispozícii v článku.

Procedúra na povolenie komunikácie RX-TX v Raspberry Pi je o niečo zložitejšia a musíte postupovať podľa odkazu. Stručne povedané, musíte upraviť súbor s názvom „inittab“-umiestnený v priečinku „/etc/inittab“-, komentujte riadok „T0: 23: respawn:/sbin/getty -L ttyAMA0 115200 vt100“(ak súbor nie je založený v OS Raspberry, musíte zadať príkaz: „sudo leafpad /boot/config.txt“a na koniec súboru pridať riadok „enable_uart = 1“). Akonáhle to urobíte, musíte znova otvoriť terminál LX a deaktivovať sériové číslo pomocou príkazov „sudo systemctl stop [email protected]“a „sudo systemctl disable [email protected]“. Potom musíte vykonať príkaz „sudo leafpad /boot/cmdline.txt“, odstrániť riadok „console = serial0, 115200“, uložiť súbor a reštartovať zariadenie. Aby bola komunikácia RX-TX možná, musí byť na Raspberry Pi nainštalovaná sériová knižnica s príkazom „sudo apt-get install -f python-serial“a knižnicu importovať do kódu vložením riadku „importovať sériovú“, inicializácia seriálu vložením riadku „ser = serial. Serial (" / dev / ttyS0 ", 9600)" a čítanie napätia odoslaného Arduinom pomocou príkazu "ser.readline ()" - celý použitý kód v Raspberry bude k dispozícii na konci článku.

Podľa postupu popísaného vyššie je krok čítania a odoslania napätia dokončený.

Krok 6: Programovanie Arduino:

Ako už bolo uvedené, kód zodpovedný za čítanie napätia generovaného pri cyklovaní je veľmi jednoduchý.

Najprv je potrebné vybrať pin A0 ako zodpovedný za čítanie napätia.

Vo funkcii „void setup ()“musíte nastaviť pin A0 na INPUT pomocou príkazu „pinMode (senzor, INPUT)“a pomocou príkazu „Serial.begin (9600)“zvoliť prenosovú rýchlosť sériového portu.

V "prázdnej slučke ()" sa funkcia "Serial.flush ()" používa na vymazanie vyrovnávacej pamäte zakaždým, keď ukončí odosielanie informácií prostredníctvom sériového čísla; čítanie napätia je vykonávané funkciou „analogRead (senzor)“- pamätajúc si, že je potrebné previesť hodnotu načítanú analógovým portom na volty - proces citovaný v časti „čítanie napätia“článku.

Vo funkcii „void loop ()“je tiež potrebné previesť premennú x z float na reťazec, pretože iba tak je možné premennú odoslať prostredníctvom RX-TX. Posledným krokom vo funkcii loop je vytlačiť reťazec na sériový port, aby ho bolo možné odoslať do Raspberry - na to musíte použiť funkciu „Serial.println (y)“. Riadok „oneskorenie (100)“bol do kódu pridaný iba preto, aby sa premenná odosielala v intervaloch 100 ms - ak sa tento čas nedodrží, dôjde k sériovému preťaženiu, ktoré generuje možné zlyhania programu.

voltage_read.ino

plavákový senzor = A0;
voidsetup () {
pinMode (senzor, VSTUP);
Serial.begin (9600);
}
voidloop () {
Serial.flush ();
float x = analogový Čítanie (snímač)*0,0048828125*16,67;
Reťazec y = "";
y+= x;
Serial.println (y);
oneskorenie (100);
}

zobraziť rawvoltage_read.ino hostené s ❤ od GitHub

Krok 7: Programovanie Raspberry Pi 3:

lamp_bike.py

import os #import knižnice operačného systému (v prípade potreby slúži na vymazanie obrazovky)
importujte RPi. GPIOako knižnica gpio #import používaná na ovládanie GPIO Raspnerry
importujte knižnicu serial #import zodpovednú za sériovú komunikáciu
import time #import knižnica, ktorá umožňuje používať funkciu delay
importujte podproces #importová knižnica zodpovedná za prehrávanie skladieb
#spustenie seriálu
ser = serial. Serial ("/dev/ttyS0", 9600) #definujte názov zariadenia a prenosovú rýchlosť
#jasná obrazovka
clear = lambda: os.system ('clear')
#sada pinov na ovládanie relé
gpio.setmode (gpio. BOARD)
gpio.setup (11, gpio. OUT) #lampa 10
gpio.setup (12, gpio. OUT) #lampa 9
gpio.setup (13, gpio. OUT) #lampa 8
gpio.setup (15, gpio. OUT) #lampa 7
gpio.setup (16, gpio. OUT) #lampa 6
gpio.setup (18, gpio. OUT) #lampa 5
gpio.setup (19, gpio. OUT) #lampa 4
gpio.setup (21, gpio. OUT) #lampa 3
gpio.setup (22, gpio. OUT) #lampa 2
gpio.setup (23, gpio. OUT) #lampa 1
#spustenie záznamov
name = ["None"]*10
napätie = [0,00]*10
#súbor so záznamom o prečítaní
f = otvorené ('záznamy', 'r')
pretože uvádzam (10): #v zozname je 10 najlepších skóre
meno = f.readline ()
meno = meno [: len (meno )-1]
napätie = f.readline ()
napätie = float (napätie [: len (napätie )-1])
f.close ()
jasný()
#nastavte maximálne napätie
max = 50,00
#vypnite žiarovky
pretože uvádzam (11, 24, 1):
ak i! = 14 a i! = 17 a i! = 20:
gpio.output (i, gpio. HIGH) #set na HIGH, relé sú vypnuté
#štart
whileTrue:
#úvodná obrazovka
vytlačiť „Záznamy: / n“
pretože uvádzam (10):
vytlačiť názov , ":", napätie , "V"
current_name = raw_input ("Napíšte svoje meno na začiatok:")
jasný()
#Zmeňte maximálnu hodnotu
if current_name == "max":
max = vstup („Napíšte maximálne napätie: (2 desatinné miesta)“)
jasný()
inak:
#varovanie pred štartom
pre i inrange (11, 24, 1): #smyčka začína v PIN 11 a končí v PIN 24
ak i! = 14and i! = 17and i! = 20: #PIN 14 a 20 sú kolíky GND a 20 je 3,3 V kolík
gpio.output (i, gpio. LOW) #zapnite žiarovky
čas.spánok (0,5)
k = 10
pretože ja usporiadam (23, 10, -1):
jasný()
ak i! = 14 a i! = 17 a i! = 20:
podproces. Popen (['aplay', 'Audios/'+str (k)+'. wav'])
time.sleep (0,03)
jasný()
vytlačiť „Pripravte sa! / n“, k
time.sleep (1)
k- = 1
gpio.output (i, gpio. HIGH) #vypnite žiarovky (jednu po druhej)
subprocess. Popen (['aplay', 'Audios/go.wav']) #prehrá úvodnú hudbu
time.sleep (0,03)
jasný()
vytlačiť „Choď!“
time.sleep (1)
jasný()
#prečítané napätie
aktuálne napätie = 0,00
napätie1 = 0,00
pretože uvádzam (200):
ser.flushInput ()
predchádzajúce = napätie1
napätie1 = float (ser.readline ()) #zbiera údaje Arduina prenášané RX-TX
jasný()
tlačové napätie1, "V"
ak napätie1> aktuálne_ napätie:
current_voltage = napätie1
# v závislosti od generovaného napätia sa rozsvieti viac žiaroviek.
ak napätie1 <max/10:
pretože uvádzam (11, 24, 1):
ak i! = 14 a i! = 17 a i! = 20:
gpio.output (i, gpio. HIGH)
ak napätie1> = max/10:
gpio.output (11, gpio. LOW)
pretože uvádzam (12, 24, 1):
ak i! = 14 a i! = 17 a i! = 20:
gpio.output (i, gpio. HIGH)
ak napätie1> = 2*max/10:
pretože uvádzam (11, 13, 1):
gpio.output (i, gpio. LOW)
pretože uvádzam (13, 24, 1):
ak i! = 14 a i! = 17 a i! = 20:
gpio.output (i, gpio. HIGH)
ak napätie1> = 3*max/10:
pretože uvádzam (11, 14, 1):
gpio.output (i, gpio. LOW)
pretože uvádzam (15, 24, 1):
ak i! = 17 a i! = 20:
gpio.output (i, gpio. HIGH)
ak napätie1> = 4*max/10:
pretože uvádzam (11, 16, 1):
ak ja! = 14:
gpio.output (i, gpio. LOW)
pretože uvádzam (16, 24, 1):
ak i! = 17 a i! = 20:
gpio.output (i, gpio. HIGH)
ak napätie1> = 5*max/10:
pretože uvádzam (11, 17, 1):
ak ja! = 14:
gpio.output (i, gpio. LOW)
pretože uvádzam (18, 24, 1):
ak ja! = 20:
gpio.output (i, gpio. HIGH)
ak napätie1> = 6*max/10:
pretože uvádzam (11, 19, 1):
ak i! = 14 a i! = 17:
gpio.output (i, gpio. LOW)
pretože uvádzam (19, 24, 1):
ak ja! = 20:
gpio.output (i, gpio. HIGH)
ak napätie1> = 7*max/10:
pretože uvádzam (11, 20, 1):
ak i! = 14 a i! = 17:
gpio.output (i, gpio. LOW)
pretože uvádzam (21, 24, 1):
gpio.output (i, gpio. HIGH)
ak napätie1> = 8*max/10:
pretože uvádzam (11, 22, 1):
ak i! = 14 a i! = 17 a i! = 20:
gpio.output (i, gpio. LOW)
pretože uvádzam (22, 24, 1):
gpio.output (i, gpio. HIGH)
ak napätie1> = 9*max/10:
pretože uvádzam (11, 23, 1):
ak i! = 14 a i! = 17 a i! = 20:
gpio.output (i, gpio. LOW)
gpio.output (23, gpio. HIGH)
ak napätie1> = max:
pretože uvádzam (11, 24, 1):
ak i! = 14 a i! = 17 a i! = 20:
gpio.output (i, gpio. LOW)
ak napätie 1
prestávka
#vypnite žiarovky
pretože uvádzam (11, 24, 1):
ak i! = 14 a i! = 17 a i! = 20:
gpio.output (i, gpio. HIGH)
#víťazná hudba
ak je aktuálne napätie> = max:
subprocess. Popen (['aplay', 'Audios/rocky.wav'])
time.sleep (0,03)
jasný()
vytlačiť „VEĽMI DOBRÉ, VYHRÁVAŠ!“% (u '\u00c9', u '\u00ca', u '\u00c2')
pretože uvádzam (10):
pre j inrange (11, 24, 1):
ak j! = 14 a j! = 17 a j! = 20:
gpio.output (j, gpio. LOW)
time.sleep (0,05)
pre j inrange (11, 24, 1):
ak j! = 14 a j! = 17 a j! = 20:
gpio.output (j, gpio. HIGH)
time.sleep (0,05)
čas.spánok (0,5)
subprocess. Popen (['aplay', 'Audios/end.wav'])
time.sleep (0,03)
jasný()
vytlačiť „Ukončiť hru … / n“, aktuálne_ napätie, „V“
#záznamy
time.sleep (1.2)
dosiahnuté = 0
pretože uvádzam (10):
ak aktuálne_napätie> napätie :
dosiahol+= 1
temp_voltage = napätie
napätie = prúdové napätie
current_voltage = temp_voltage
temp_name = meno
meno = aktuálne_názov
current_name = názov_ temp
ak sa dosiahne> 0:
podproces. Popen (['aplay', 'Audios/record.wav'])
time.sleep (0,03)
jasný()
f = otvorené ('záznamy', 'w')
pretože uvádzam (10):
f.pis (meno )
f.write ("\ n")
f.write (str (napätie ))
f.write ("\ n")
f.close ()
jasný()

pozrite sa na rawlamps_bike.py, ktorého hostiteľom je ❤ od GitHub

Krok 8: Elektrická schéma:

Elektrická schéma
Elektrická schéma
Elektrická schéma
Elektrická schéma
Elektrická schéma
Elektrická schéma

Arduino a Raspberry Pi 3 sú napájané zdrojom 5 V s prúdom 3 A.

Elektrický obvod začína pripojením generátora jednosmerného prúdu (spojeného s bicyklom) k Arduinu cez napäťový filter zložený zo Zenerovej diódy 5,3 V, kondenzátora 10 μF a odporu 1 kΩ - vstup filtra je pripojený k svorky generátora a výstup je pripojený k portu A0 a GND ovládača.

Arduino je k Raspberry pripojené prostredníctvom komunikácie RX-TX-vykonáva sa pomocou odporového deliča pomocou odporov 10 kΩ (vyžaduje to porty ovládačov pracujúce pri rôznych napätiach).

GPIO Raspberry Pi sú pripojené k relé zodpovedným za zapínanie žiaroviek. „COM“všetkých relé bol prepojený a pripojený k fáze (sieť AC) a „N. O“(normálne rozpojené) každého relé bolo zapojené do každej žiarovky a neutrál zo siete AC bol prepojený so všetkými žiarovkami. Keď je teda aktivovaný GPIO zodpovedný za každé relé, relé sa prepne do fázy siete AC a rozsvieti príslušnú kontrolku.

Krok 9: Výsledky:

Image
Image

Po konečnej montáži projektu bolo overené, že funguje podľa očakávania - podľa rýchlosti, ktorou používateľ šliape na bicykli, sa generuje viac napätia a svieti viac žiaroviek.

Odporúča: