Sadržaj:
- Korak 1: Materijali:
- Korak 2: Dijagram blokova sustava:
- Korak 3: Rad sustava:
- Korak 4: Mehanički aspekti
- Korak 5: Očitavanje napona:
- Korak 6: Arduino programiranje:
- Korak 7: Programiranje Raspberry Pi 3:
- Korak 8: Električna shema:
- Korak 9: Rezultati:
Video: Generiranje napona biciklom s ergometrom: 9 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
Razrada projekta sastojala se u sastavljanju „igre“s ciljem pedaliranja u ergometarskom biciklu spojenom na generator i tornju od svjetiljki koje se aktiviraju s povećanjem brzine motora - što se događa prema pedaliranju bicikla. Sustav se temeljio na očitanju-putem analognog porta Arduino Mega-trenutnog generiranog napona, zatim prenošenju ovih podataka na Raspberry Pi 3 putem serijske RX-TX komunikacije i naknadnom aktiviranju svjetiljki putem releja.
Korak 1: Materijali:
- 1 malina Pi 3;
- 1 Arduino Mega 2560;
- 1 relejni štit s 10 releja 12 V;
- 10 žarulja sa žarnom niti 127 V;
- 1 bicikl s ergometrom;
- 1 električni stroj (generator) 12 V;
- Otpornici (1x1kΩ, 2x10kΩ);
- 1 elektrolitički kondenzator 10 µF;
- 1 Zener dioda 5,3 V;
- 1,5 mm kabel (crveni, crni, smeđi);
- 1 MDF toranj s nosačem za 10 svjetiljki.
Korak 2: Dijagram blokova sustava:
Korak 3: Rad sustava:
Sustav se temelji na transformaciji kinetičke energije nastale pri bicikliranju u električnoj energiji odgovornoj za aktiviranje releja koji će upaliti žarulje.
Napon koji generira generator očitava se analognim pinom Arduina i šalje se putem RX-TX na Raspberry Pi. Aktiviranje releja proporcionalno je generiranom naponu - što je veći napon, više releja će se aktivirati i više će lampica zasvijetliti.
Korak 4: Mehanički aspekti
Kako bi se istosmjerni generator mehanički spojio s biciklom, sustav pojasa morao je biti zamijenjen sustavom koji se koristi na uobičajenim biciklima (koji se sastoji od krune, lanca i zupčanika). Na okvir bicikla zavarena je metalna ploča kako bi se motor mogao pričvrstiti vijcima. Nakon toga, zupčanik je zavaren na osovinu generatora kako bi se lanac mogao postaviti, povezujući sustav pedala s generatorom.
Korak 5: Očitavanje napona:
Za očitavanje napona generatora pomoću Arduina potrebno je spojiti pozitivni pol električnog stroja na A0 pin kontrolera, a negativni pol na GND - kako bi se izbjeglo da je maksimalni napon generatora veći od 5 V napona Arduino pinovi, naponski filter s kondenzatorom od 10 µF, otpornik od 1 kΩ i zener dioda od 5,3 V konstruirani su i spojeni između regulatora i generatora. Firmver učitan u Arduino vrlo je jednostavan i sastoji se samo od čitanja analognog porta, pomnožene očitane vrijednosti s konstantom 0,0048828125 (5/1024, to jest napon GPIO -a Arduina podijeljen s brojem bitova analognog porta) i slanja varijabla na Serijski - kôd će biti dostupan u članku.
Postupak omogućavanja RX-TX komunikacije u Raspberry Pi je malo složeniji, pa morate slijediti postupak opisan na poveznici. Ukratko, trebate urediti datoteku pod nazivom "inittab" -koja se nalazi u "/etc/inittab" -, komentirajte redak "T0: 23: respawn:/sbin/getty -L ttyAMA0 115200 vt100" (ako datoteka nije osnovano u Raspberry -jevom OS -u, morate unijeti naredbu: “sudo leafpad /boot/config.txt” i na kraj datoteke dodati redak “enable_uart = 1”). Nakon što to učinite, morate ponovno otvoriti LX terminal i onemogućiti serijski broj naredbama "sudo systemctl stop [email protected]" i "sudo systemctl disable [email protected]". Nakon toga morate izvršiti naredbu "sudo leafpad /boot/cmdline.txt", izbrisati redak "console = serial0, 115200", spremiti datoteku i ponovno pokrenuti uređaj. Da bi RX-TX komunikacija bila moguća, serijska knjižnica mora biti instalirana na Raspberry Pi naredbom "sudo apt-get install -f python-serial" i uvesti knjižnicu u kôd umetanjem retka "import serijski", inicijaliziranjem serijskog umetanja retka "ser = serial. Serial (" / dev / ttyS0 ", 9600)" i čitanjem napona koji šalje Arduino pomoću naredbe "ser.readline ()" - cijeli kôd koji se koristi in Raspberry bit će dostupni na kraju članka.
Slijedeći gore opisani postupak, korak očitavanja i slanja napona je dovršen.
Korak 6: Arduino programiranje:
Kao što je prethodno navedeno, kôd odgovoran za očitavanje napona generiranog tijekom vožnje biciklom vrlo je jednostavan.
Prije svega, potrebno je odabrati pin A0 kao odgovorni za očitavanje napona.
U funkciji "void setup ()" morate postaviti pin A0 na INPUT naredbom "pinMode (sensor, INPUT)" i odabrati brzinu prijenosa serijskog porta pomoću naredbe "Serial.begin (9600)".
U "void loop ()", funkcija "Serial.flush ()" se koristi za brisanje međuspremnika svaki put kad prekine slanje informacija putem serijskog broja; očitavanje napona vrši funkcija "analogRead (senzor)" - imajući u vidu da je potrebno pretvoriti vrijednost očitanu s analognog porta u volte - proces koji je naveden u odjeljku "napon čitanja" u članku.
Također, u funkciji "void loop ()" potrebno je varijablu x pretvoriti iz plutajućeg u niz, budući da je to jedini način za slanje varijable putem RX-TX-a. Posljednji korak u funkciji petlje je ispis niza u serijskom portu kako bi se mogao poslati na Raspberry - za to morate koristiti funkciju "Serial.println (y)". Redak "delay (100)" dodan je kodu samo tako da se varijabla šalje u intervalima od 100 ms - ako se ovo vrijeme ne poštuje, doći će do serijskog preopterećenja, generirajući moguće rušenja u programu.
napon_čitaj.ino
osjetnik plovka = A0; |
voidsetup () { |
pinMode (senzor, ULAZ); |
Serial.begin (9600); |
} |
voidloop () { |
Serial.flush (); |
float x = analogRead (senzor)*0,0048828125*16,67; |
Niz y = ""; |
y+= x; |
Serijski.println (y); |
kašnjenje (100); |
} |
pogledajte rawvoltage_read.ino hostirano sa ❤ na GitHubu
Korak 7: Programiranje Raspberry Pi 3:
lamp_bike.py
import os #import os biblioteke (koristi se za brisanje ekrana po potrebi) |
uvoz RPi. GPIOas gpio #import knjižnica koja se koristi za kontrolu Raspnerryjevog GPIO -a |
import serial #import library odgovorna za serijsku komunikaciju |
import time #import knjižnica koja omogućuje korištenje funkcije delay |
uvoz podprocesa #import knjižnica odgovorna za reprodukciju pjesama |
#start serial |
ser = serial. Serial ("/dev/ttyS0", 9600) #definirajte naziv uređaja i brzinu prijenosa |
#jasan ekran |
clear = lambda: os.system ('clear') |
#set pinova za kontrolu releja |
gpio.setmode (gpio. BOARD) |
gpio.setup (11, gpio. OUT) #lamp 10 |
gpio.setup (12, gpio. OUT) #lampa 9 |
gpio.setup (13, gpio. OUT) #lampa 8 |
gpio.setup (15, gpio. OUT) #žarulja 7 |
gpio.setup (16, gpio. OUT) #žarulja 6 |
gpio.setup (18, gpio. OUT) #lamp 5 |
gpio.setup (19, gpio. OUT) #lamp 4 |
gpio.setup (21, gpio. OUT) #žarulja 3 |
gpio.setup (22, gpio. OUT) #lamp 2 |
gpio.setup (23, gpio. OUT) #lamp 1 |
#pokrenuti zapisi |
name = ["None"]*10 |
napon = [0,00]*10 |
#pročitana datoteka zapisa |
f = otvoreno ('zapisi', 'r') |
za i inrange (10): #10 najboljih rezultata pojavljuje se na popisu |
name = f.readline () |
ime = ime [: len (ime )-1] |
napon = f.redline () |
napon = plovak (napon [: len (napon )-1]) |
f.close () |
čisto() |
#postavite maksimalni napon |
max = 50,00 |
#gasi lampe |
jer i raspoređujem (11, 24, 1): |
ako je i! = 14i i! = 17i i! = 20: |
gpio.output (i, gpio. HIGH) #postavljeno na HIGH, releji su isključeni |
#početak |
whileTrue: |
#početni zaslon |
ispis "Zapisi: / n" |
jer ja dogovaram (10): |
ispis ime , ":", napon , "V" |
current_name = raw_input ("Napišite svoje ime za početak:") |
čisto() |
#Promijenite maksimalnu vrijednost |
ako je current_name == "max": |
max = ulaz ("Zapišite maksimalni napon: (2 decimalna mjesta)") |
čisto() |
drugo: |
#pokretanje upozorenja |
za i inrange (11, 24, 1): #petlja počinje u PIN -u 11 i zaustavlja se u PIN -u 24 |
ako je i! = 14i i! = 17i i! = 20: #PIN 14 i 20 su GND pinovi, a 20 je pin od 3,3 V |
gpio.output (i, gpio. LOW) #Uključite žarulje |
vrijeme.spavanje (0,5) |
k = 10 |
za i inrange (23, 10, -1): |
čisto() |
ako je i! = 14i i! = 17i i! = 20: |
potproces. Popen (['aplay', 'Audios/'+str (k)+'. wav']) |
vrijeme.spavanje (0,03) |
čisto() |
ispis "Pripremite se! / n", k |
vrijeme.spavanje (1) |
k- = 1 |
gpio.output (i, gpio. HIGH) #ugasite žarulje (jednu po jednu) |
potproces. Popen (['aplay', 'Audios/go.wav']) #pušta glazbu za početak |
vrijeme.spavanje (0,03) |
čisto() |
ispisati "GO!" |
vrijeme.spavanje (1) |
čisto() |
#očitavanje napona |
strujni_napon = 0,00 |
napon1 = 0,00 |
jer ja inrange (200): |
ser.flushInput () |
prethodni = napon1 |
napon1 = float (ser.readline ()) #prikuplja Arduino podatke prenesene putem RX-TX-a |
čisto() |
napon ispisa1, "V" |
ako je napon1> napon_struje: |
strujni_napon = napon1 |
# ovisno o generiranom naponu, više lampica svijetli. |
ako je napon1 <max/10: |
jer i raspoređujem (11, 24, 1): |
ako je i! = 14i i! = 17i i! = 20: |
gpio.output (i, gpio. HIGH) |
ako je napon1> = max/10: |
gpio.output (11, gpio. LOW) |
jer i raspoređujem (12, 24, 1): |
ako je i! = 14i i! = 17i i! = 20: |
gpio.output (i, gpio. HIGH) |
ako je napon1> = 2*max/10: |
jer i raspoređujem (11, 13, 1): |
gpio.output (i, gpio. LOW) |
jer ja raspoređujem (13, 24, 1): |
ako je i! = 14i i! = 17i i! = 20: |
gpio.output (i, gpio. HIGH) |
ako je napon1> = 3*max/10: |
jer ja inrange (11, 14, 1): |
gpio.output (i, gpio. LOW) |
jer i raspoređujem (15, 24, 1): |
ako je i! = 17i ja! = 20: |
gpio.output (i, gpio. HIGH) |
ako je napon1> = 4*max/10: |
jer ja inrange (11, 16, 1): |
ako ja! = 14: |
gpio.output (i, gpio. LOW) |
jer i raspoređujem (16, 24, 1): |
ako je i! = 17i ja! = 20: |
gpio.output (i, gpio. HIGH) |
ako je napon1> = 5*max/10: |
jer ja inrange (11, 17, 1): |
ako ja! = 14: |
gpio.output (i, gpio. LOW) |
jer ja inrange (18, 24, 1): |
ako sam! = 20: |
gpio.output (i, gpio. HIGH) |
ako je napon1> = 6*max/10: |
jer ja inrange (11, 19, 1): |
ako je i! = 14i ja! = 17: |
gpio.output (i, gpio. LOW) |
jer ja raspoređujem (19, 24, 1): |
ako sam! = 20: |
gpio.output (i, gpio. HIGH) |
ako je napon1> = 7*max/10: |
jer ja inrange (11, 20, 1): |
ako je i! = 14i ja! = 17: |
gpio.output (i, gpio. LOW) |
jer ja inrange (21, 24, 1): |
gpio.output (i, gpio. HIGH) |
ako je napon1> = 8*max/10: |
jer ja raspoređujem (11, 22, 1): |
ako je i! = 14i i! = 17i i! = 20: |
gpio.output (i, gpio. LOW) |
jer ja raspoređujem (22, 24, 1): |
gpio.output (i, gpio. HIGH) |
ako je napon1> = 9*max/10: |
jer ja raspoređujem (11, 23, 1): |
ako je i! = 14i i! = 17i i! = 20: |
gpio.output (i, gpio. LOW) |
gpio.output (23, gpio. HIGH) |
ako je napon1> = max: |
jer i raspoređujem (11, 24, 1): |
ako je i! = 14i i! = 17i i! = 20: |
gpio.output (i, gpio. LOW) |
ako je napon1 |
pauza |
#gasi lampe |
jer i raspoređujem (11, 24, 1): |
ako je i! = 14i i! = 17i i! = 20: |
gpio.output (i, gpio. HIGH) |
#pobjedonosna glazba |
ako je napon struje> = max: |
potproces. Popen (['aplay', 'Audios/rocky.wav']) |
vrijeme.spavanje (0,03) |
čisto() |
ispišite "VRLO DOBRO, POBJEDILI STE!"% (u '\u00c9', u '\u00ca', u '\u00c2') |
jer ja dogovaram (10): |
za j inrange (11, 24, 1): |
ako je j! = 14i j! = 17i j! = 20: |
gpio.output (j, gpio. LOW) |
vrijeme.spavanje (0,05) |
za j inrange (11, 24, 1): |
ako je j! = 14i j! = 17i j! = 20: |
gpio.output (j, gpio. HIGH) |
vrijeme.spavanje (0,05) |
vrijeme.spavanje (0,5) |
potproces. Popen (['aplay', 'Audios/end.wav']) |
vrijeme.spavanje (0,03) |
čisto() |
ispis "Završi igru … / n", trenutni_napon, "V" |
#zapisi |
vrijeme.spavanje (1.2) |
dosegnuto = 0 |
jer ja dogovaram (10): |
ako je napon struje> napon : |
dosegao+= 1 |
temp_napon = napon |
napon = strujni_napon |
strujni_napon = temp_napon |
temp_name = ime |
naziv = naziv_tekuće |
trenutni_naziv = temp_name |
ako je dosegnuto> 0: |
potproces. Popen (['aplay', 'Audios/record.wav']) |
vrijeme.spavanje (0,03) |
čisto() |
f = otvoreno ('zapisi', 'w') |
jer ja dogovaram (10): |
f.pisati (ime ) |
f.write ("\ n") |
f.write (str (napon )) |
f.write ("\ n") |
f.close () |
čisto() |
pogledajte rawlamps_bike.py hostirano sa ❤ na GitHubu
Korak 8: Električna shema:
Arduino i Raspberry Pi 3 napajaju se iz 5V izvora sa 3A strujom.
Električni krug počinje spajanjem istosmjernog generatora (spojenog na bicikl) na Arduino kroz naponski filter sastavljen od Zener diode od 5,3 V, kondenzatora od 10 μF i otpornika od 1 kΩ - ulaz filtra spojen je na priključci generatora i izlaz je spojen na A0 port i GND regulatora.
Arduino je spojen na Raspberry putem RX-TX komunikacije-izvodi se kroz otpornički razdjelnik pomoću 10 kΩ otpornika (što je potrebno za portove kontrolera koji rade na različitim naponima).
GPIO -i Raspberry Pi spojeni su na releje odgovorne za uključivanje svjetiljki. "COM" svih releja bio je međusobno povezan i spojen na fazu (izmjenična mreža), a "N. O" (normalno otvoren) svakog releja spojen je na svaku žarulju, a neutralna mreža izmjenične struje bila je spojena na sve svjetiljke. Dakle, kada se aktivira GPIO odgovoran za svaki relej, relej se prebacuje u fazu AC mreže i uključuje odgovarajuću žarulju.
Korak 9: Rezultati:
Nakon konačne montaže projekta, provjereno je da je radio prema očekivanjima - prema brzini koju korisnik pedalira na biciklu stvara se veći napon i svijetli više lampica.
Preporučeni:
Generiranje umjetnosti iz komentara: 5 koraka (sa slikama)
Generiranje umjetnosti iz komentara: Ovaj je projekt ambiciozan i želimo upotrijebiti neke od najspornijih dijelova interneta, odjeljke za komentare i sobe za chat kako bismo stvorili umjetnost. Također želimo učiniti projekt lako dostupnim kako bi se svatko mogao okušati u stvaranju
Generiranje PWM signala visoke razlučivosti za RC servo uređaje sa STM32 uređajima: 3 koraka
Generiranje PWM signala visoke razlučivosti za RC servo uređaje sa STM32 uređajima: Trenutno gradim RC odašiljač/prijamnik temeljen na SX1280 RF čipu. Jedan od ciljeva projekta je da želim 12 -bitnu servo rezoluciju od štapova do servosa. Djelomično zato što moderni digitalni servo uređaji imaju 12 -bitnu rezoluciju
Regulator napona na matičnoj ploči s zaslonom / regulatorom napona Com Display za placa de ensaio: 8 koraka
Regulator napona na ploči s zaslonom / Regulator napona Com zaslon Para Placa De Ensaio: Nabavite potrebne komponente koje se nalaze na priloženom popisu (postoje veze za kupnju ili pregled njihovih karakteristika). lá os links para poderem comprar ou ver as caracteristicas d
Svjetlo predvođeno biciklom: 8 koraka (sa slikama)
Svjetlo predvođeno biciklom: Mnogo puta. Noću sam koristio bicikl i nemam svjetla !. Stoga sam odlučio napraviti sklop koji treperi s LED diodama s nekoliko komponenti, a također je vrlo jednostavan. Također želim da svjetlo, nakon instaliranja, bude nevidljivo, a stražnji dio sjedala ponuđen
Cipela za generiranje energije: 10 koraka (sa slikama)
Cipele za generiranje energije: Ova instrukcija će vam pokazati kako stvoriti cipele koje proizvode električnu energiju. To čini tako da koristi vašu energiju dok hodate i pretvara je u električnu energiju. Ako ste ikada izgubili napajanje mobitela usred ničega, onda