Obsah:
- Krok 1: Materiály:
- Krok 2: Diagram blokov systému:
- Krok 3: Prevádzka systému:
- Krok 4: Mechanické aspekty
- Krok 5: Čítanie napätia:
- Krok 6: Programovanie Arduino:
- Krok 7: Programovanie Raspberry Pi 3:
- Krok 8: Elektrická schéma:
- Krok 9: Výsledky:
Video: Generovanie napätia pomocou ergometra: 9 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
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:
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
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:
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:
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:
Menič napätia DC - DC prepínaného režimu Buck napätia (LM2576/LM2596): 4 kroky
Prevodník napätia DC-DC prepínača režimu znižovania napätia (LM2576/LM2596): Výroba vysoko efektívneho prevodníka dolárov je náročná práca a dokonca aj skúsení inžinieri vyžadujú niekoľko návrhov, aby prišli na ten správny. je menič napätia DC na DC, ktorý znižuje napätie (pri zvyšovaní
Generovanie vlny PWM s mikrokontrolérom PIC: 6 krokov
Generovanie vlny PWM pomocou mikrokontroléra PIC: ČO JE PWM? PWM STANUJE MODULÁCIU ŠÍRKY PULZU je technika, pomocou ktorej sa mení šírka impulzu. Aby ste pochopili tento koncept, jasne zvážte hodinový impulz alebo akýkoľvek signál štvorcovej vlny, ktorý má 50% pracovný cyklus, čo znamená, že obdobie Ton a Toff je rovnaké
Generovanie tónov rôznych druhov pomocou matematických rovníc (MathsMusic) Arduino: 5 krokov
Generovanie tónov rôznych druhov pomocou matematických rovníc (MathsMusic) Arduino: Popis projektu: Začala sa nová cesta, kde je možné nápady ľahko implementovať pomocou komunity open source (vďaka Arduinu). Existuje teda spôsob, ako sa pozerať okolo seba a všímať si svoje okolie. Objavte problémy, ktoré je potrebné
DIY a NE555 obvod na generovanie sínusovej vlny: 6 krokov
DIY a NE555 obvod na generovanie sínusovej vlny: Tento tutoriál vás naučí, ako si vytvoriť obvod NE555 na generovanie sínusovej vlny. Tieto cenovo dostupné súpravy pre domácich majstrov sú veľmi užitočné pre to, aby ste pochopili, ako môžu kondenzátory pracovať s odpormi na regulácii času nabíjania a vybíjania, ktorý môže generovať
Automatické diaľkové ovládanie ZAP / VYP pomocou konektora MIC na videokamere / polovodičové relé nízkeho napätia: 4 kroky (s obrázkami)
Automatické diaľkové ovládanie ZAP / VYP pomocou konektora MIC na kamkordéri / nízkonapäťového polovodičového relé: Prehľad: Na rozpoznanie zapnutej videokamery sme použili konektor MIC na videokamere. Postavili sme nízkonapäťové polovodičové relé na detekciu konektora MIC a automatické zapínanie a vypínanie vzdialeného zariadenia súčasne s videokamerou. Polovodičový