![Generování napětí pomocí Ergometrického kola: 9 kroků (s obrázky) Generování napětí pomocí Ergometrického kola: 9 kroků (s obrázky)](https://i.howwhatproduce.com/images/002/image-5418-44-j.webp)
Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-23 14:38
![Generování napětí pomocí Ergometrického kola Generování napětí pomocí Ergometrického kola](https://i.howwhatproduce.com/images/002/image-5418-45-j.webp)
![Generování napětí pomocí Ergometrického kola Generování napětí pomocí Ergometrického kola](https://i.howwhatproduce.com/images/002/image-5418-46-j.webp)
![Generování napětí pomocí Ergometrického kola Generování napětí pomocí Ergometrického kola](https://i.howwhatproduce.com/images/002/image-5418-47-j.webp)
Zpracování projektu spočívalo v sestavení „hry“s cílem šlapat na ergometrickém kole připojeném ke generátoru a věži lamp, které se aktivují při zvyšování otáček motoru - což se děje podle šlapání na kole. Systém byl založen na odečtu-prostřednictvím analogového portu Arduino Mega-generovaného okamžitého napětí, následném přenosu těchto dat na Raspberry Pi 3 prostřednictvím sériové komunikace RX-TX a následné aktivaci lamp prostřednictvím relé.
Krok 1: Materiály:
- 1 Raspberry Pi 3;
- 1 Arduino Mega 2560;
- 1 reléový štít s 10 relé 12 V;
- 10 žárovek 127 V;
- 1 kolo Ergometer;
- 1 elektrický stroj (generátor) 12 V;
- Rezistory (1x1kΩ, 2x10kΩ);
- 1 elektrolytický kondenzátor 10 µF;
- 1 Zenerova dioda 5,3 V;
- 1,5 mm kabel (červený, černý, hnědý);
- 1 věž z MDF s podporou 10 lamp.
Krok 2: Diagram systémových bloků:
![Schéma systémových bloků Schéma systémových bloků](https://i.howwhatproduce.com/images/002/image-5418-48-j.webp)
Krok 3: Provoz systému:
Systém je založen na transformaci kinetické energie generované při cyklování kola elektrickou energií zodpovědnou za aktivaci relé, která rozsvítí žárovky.
Napětí generované generátorem je čteno analogovým pinem Arduina a je posíláno přes RX-TX na Raspberry Pi. Aktivace relé je úměrná generovanému napětí - čím vyšší napětí, tím více relé sepne a rozsvítí se více lamp.
Krok 4: Mechanické aspekty
![Mechanické aspekty Mechanické aspekty](https://i.howwhatproduce.com/images/002/image-5418-49-j.webp)
Aby bylo možné DC generátor mechanicky spojit s jízdním kolem, musel být pásový systém nahrazen systémem používaným na běžných jízdních kolech (sestávajících z koruny, řetězu a pastorku). K rámu jízdního kola byla přivařena kovová deska, aby bylo možné motor zajistit šrouby. Poté byl pastorek přivařen k hřídeli generátoru, aby bylo možné umístit řetěz a propojit pedálový systém s generátorem.
Krok 5: Čtení napětí:
Ke čtení napětí generátoru pomocí Arduina je nutné připojit kladný pól elektrického stroje ke kolíku A0 ovladače a záporný pól k GND - aby se zabránilo tomu, že maximální napětí generátoru bude větší než 5 V Mezi ovladač a generátor byly zkonstruovány a připojeny piny Arduino, napěťový filtr využívající kondenzátor 10 µF, odpor 1 kΩ a Zenerovu diodu 5,3 V. Firmware načtený v Arduinu je velmi jednoduchý a skládá se pouze ze čtení analogového portu, vynásobení hodnoty načtené konstantou 0,0048828125 (5/1024, tj. Napětí GPIO Arduina děleno počtem bitů jeho analogového portu) a odesláním proměnná na Sériový - kód bude k dispozici v článku.
Postup povolení komunikace RX-TX v Raspberry Pi je o něco složitější a musíte postupovat podle popisu v odkazu. Stručně řečeno, musíte upravit soubor s názvem „inittab“-umístěný v „/etc/inittab“-, komentovat řádek „T0: 23: respawn:/sbin/getty -L ttyAMA0 115200 vt100“(pokud soubor není založený v operačním systému Raspberry, musíte zadat příkaz: „sudo leafpad /boot/config.txt“a na konec souboru přidat řádek „enable_uart = 1“). Jakmile to bude hotovo, musíte znovu otevřít terminál LX a zakázat sériové připojení pomocí příkazů „sudo systemctl stop [email protected]“a „sudo systemctl disable [email protected]“. Poté musíte spustit příkaz „sudo leafpad /boot/cmdline.txt“, odstranit řádek „console = serial0, 115200“, uložit soubor a restartovat zařízení. Aby byla komunikace RX-TX možná, musí být na Raspberry Pi nainstalována sériová knihovna s příkazem „sudo apt-get install -f python-serial“a importovat knihovnu do kódu vložením řádku „importovat sériovou“, inicializace seriálu vložením řádku "ser = serial. Serial (" / dev / ttyS0 ", 9600)" a čtení napětí odeslaného Arduinem pomocí příkazu "ser.readline ()" - celý použitý kód v Raspberry budou k dispozici na konci článku.
Podle výše popsaného postupu je krok čtení a odesílání napětí dokončen.
Krok 6: Programování Arduino:
Jak již bylo uvedeno, kód zodpovědný za čtení napětí generovaného při cyklování je velmi jednoduchý.
Nejprve je nutné vybrat pin A0 odpovědný za čtení napětí.
Ve funkci „void setup ()“musíte nastavit pin A0 na INPUT pomocí příkazu „pinMode (senzor, INPUT)“a pomocí příkazu „Serial.begin (9600)“zvolit přenosovou rychlost sériového portu.
V "void loop ()" se funkce "Serial.flush ()" používá k vymazání vyrovnávací paměti pokaždé, když ukončí odesílání informací přes sériové číslo; čtení napětí je prováděno funkcí "analogRead (senzor)" - pamatujeme si, že je nutné převést hodnotu načtenou analogovým portem na Volty - proces citovaný v části "čtení napětí" článku.
Také ve funkci "void loop ()" je nutné převést proměnnou x z float na řetězec, protože toto je jediný způsob odeslání proměnné přes RX-TX. Posledním krokem funkce smyčky je vytištění řetězce na sériovém portu, aby jej bylo možné odeslat do Raspberry - k tomu musíte použít funkci „Serial.println (y)“. Řádek „zpoždění (100)“byl do kódu přidán pouze proto, aby byla proměnná odesílána v intervalech 100 ms - pokud nebude tento čas respektován, dojde k sériovému přetížení, generování možných pádů v programu.
napětí_čtení.ino
plovákový senzor = A0; |
voidsetup () { |
pinMode (senzor, VSTUP); |
Serial.begin (9600); |
} |
voidloop () { |
Serial.flush (); |
float x = analogRead (senzor)*0,0048828125*16,67; |
Řetězec y = ""; |
y+= x; |
Serial.println (y); |
zpoždění (100); |
} |
zobrazit rawvoltage_read.ino hostované s ❤ od GitHub
Krok 7: Programování Raspberry Pi 3:
lamp_bike.py
import os #importovat knihovnu os (v případě potřeby slouží k vymazání obrazovky) |
import RPi. GPIOako knihovna gpio #import slouží k ovládání GPIO Raspnerry |
importujte knihovnu serial #import zodpovědnou za sériovou komunikaci |
import time #import knihovny, která umožňuje používat funkci delay |
importujte podproces #importní knihovna zodpovědná za přehrávání skladeb |
#spusťte seriál |
ser = serial. Serial ("/dev/ttyS0", 9600) #definujte název zařízení a přenosovou rychlost |
#jasná obrazovka |
clear = lambda: os.system ('clear') |
#sada pinů pro ovládání relé |
gpio.setmode (gpio. BOARD) |
gpio.setup (11, gpio. OUT) #lamp 10 |
gpio.setup (12, gpio. OUT) #lamp 9 |
gpio.setup (13, gpio. OUT) #lamp 8 |
gpio.setup (15, gpio. OUT) #lamp 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 |
#spusťte záznamy |
name = ["None"]*10 |
napětí = [0,00]*10 |
#číst soubor záznamů |
f = otevřené ('záznamy', 'r') |
for i inrange (10): #10 nejlepších skóre se zobrazí v seznamu |
jméno = f.readline () |
jméno = jméno [: len (jméno )-1] |
napětí = f.readline () |
napětí = plovoucí (napětí [: len (napětí )-1]) |
f.close () |
Průhledná() |
#nastavit maximální napětí |
max. = 50,00 |
#vypněte žárovky |
pro i inrange (11, 24, 1): |
pokud i! = 14 a i! = 17 a i! = 20: |
gpio.output (i, gpio. HIGH) #nastaveno na VYSOKÉ, relé jsou vypnuta |
#Start |
whileTrue: |
#úvodní obrazovka |
vytisknout "Záznamy: / n" |
pro já zařídím (10): |
název tisku , ":", napětí , "V" |
current_name = raw_input ("Napište své jméno pro začátek:") |
Průhledná() |
#Změňte maximální hodnotu |
if current_name == "max": |
max = vstup ("Napište maximální napětí: (2 desetinná místa)") |
Průhledná() |
jiný: |
#varování start |
pro i inrange (11, 24, 1): #smyčka začíná v PIN 11 a končí v PIN 24 |
pokud i! = 14and i! = 17and i! = 20: #PIN 14 a 20 jsou GND piny a 20 je 3,3 V pin |
gpio.output (i, gpio. LOW) #zapněte žárovky |
time.sleep (0,5) |
k = 10 |
pro i inrange (23, 10, -1): |
Průhledná() |
pokud i! = 14 a i! = 17 a i! = 20: |
subprocess. Popen (['aplay', 'Audios/'+str (k)+'. wav']) |
time.sleep (0,03) |
Průhledná() |
vytiskněte „Připravte se! / n“, k |
time.sleep (1) |
k- = 1 |
gpio.output (i, gpio. HIGH) #vypněte žárovky (jeden po druhém) |
subprocess. Popen (['aplay', 'Audios/go.wav']) #přehraje úvodní hudbu |
time.sleep (0,03) |
Průhledná() |
vytisknout „JDĚTE!“ |
time.sleep (1) |
Průhledná() |
#čtení napětí |
current_voltage = 0,00 |
napětí1 = 0,00 |
zařadím (200): |
ser.flushInput () |
předchozí = napětí1 |
napětí1 = float (ser.readline ()) #sbírá data Arduina přenesená RX-TX |
Průhledná() |
tiskové napětí1, "V" |
pokud napětí1> aktuální_ napětí: |
current_voltage = napětí1 |
# v závislosti na generovaném napětí se rozsvítí více lamp. |
pokud napětí1 <max/10: |
pro i inrange (11, 24, 1): |
pokud i! = 14 a i! = 17 a i! = 20: |
gpio.output (i, gpio. HIGH) |
pokud napětí1> = max/10: |
gpio.output (11, gpio. LOW) |
pro i inrange (12, 24, 1): |
pokud i! = 14 a i! = 17 a i! = 20: |
gpio.output (i, gpio. HIGH) |
pokud napětí1> = 2*max/10: |
pro i inrange (11, 13, 1): |
gpio.output (i, gpio. LOW) |
pro i inrange (13, 24, 1): |
pokud i! = 14 a i! = 17 a i! = 20: |
gpio.output (i, gpio. HIGH) |
pokud napětí1> = 3*max/10: |
pro já uspořádám (11, 14, 1): |
gpio.output (i, gpio. LOW) |
pro i inrange (15, 24, 1): |
pokud i! = 17 a i! = 20: |
gpio.output (i, gpio. HIGH) |
pokud napětí1> = 4*max/10: |
pro i inrange (11, 16, 1): |
pokud i! = 14: |
gpio.output (i, gpio. LOW) |
pro i inrange (16, 24, 1): |
pokud i! = 17 a i! = 20: |
gpio.output (i, gpio. HIGH) |
pokud napětí1> = 5*max/10: |
pro i inrange (11, 17, 1): |
pokud i! = 14: |
gpio.output (i, gpio. LOW) |
pro i inrange (18, 24, 1): |
pokud i! = 20: |
gpio.output (i, gpio. HIGH) |
pokud napětí1> = 6*max/10: |
pro já uspořádám (11, 19, 1): |
pokud i! = 14 a i! = 17: |
gpio.output (i, gpio. LOW) |
pro i inrange (19, 24, 1): |
pokud i! = 20: |
gpio.output (i, gpio. HIGH) |
pokud napětí1> = 7*max/10: |
pro já uspořádám (11, 20, 1): |
pokud i! = 14 a i! = 17: |
gpio.output (i, gpio. LOW) |
pro i inrange (21, 24, 1): |
gpio.output (i, gpio. HIGH) |
pokud napětí1> = 8*max/10: |
pro i inrange (11, 22, 1): |
pokud i! = 14 a i! = 17 a i! = 20: |
gpio.output (i, gpio. LOW) |
pro i inrange (22, 24, 1): |
gpio.output (i, gpio. HIGH) |
pokud napětí1> = 9*max/10: |
pro i inrange (11, 23, 1): |
pokud i! = 14 a i! = 17 a i! = 20: |
gpio.output (i, gpio. LOW) |
gpio.output (23, gpio. HIGH) |
pokud napětí1> = max: |
pro i inrange (11, 24, 1): |
pokud i! = 14 a i! = 17 a i! = 20: |
gpio.output (i, gpio. LOW) |
pokud napětí 1 |
přestávka |
#vypněte žárovky |
pro i inrange (11, 24, 1): |
pokud i! = 14 a i! = 17 a i! = 20: |
gpio.output (i, gpio. HIGH) |
#vítězná hudba |
pokud current_voltage> = max: |
subprocess. Popen (['aplay', 'Audios/rocky.wav']) |
time.sleep (0,03) |
Průhledná() |
tisknout „VELMI DOBRÉ, VY VYHRAJETE!“% (u '\u00c9', u '\u00ca', u '\u00c2') |
pro já zařídím (10): |
pro j inrange (11, 24, 1): |
pokud j! = 14and j! = 17and j! = 20: |
gpio.output (j, gpio. LOW) |
time.sleep (0,05) |
pro j inrange (11, 24, 1): |
pokud j! = 14and j! = 17and j! = 20: |
gpio.output (j, gpio. HIGH) |
time.sleep (0,05) |
time.sleep (0,5) |
subprocess. Popen (['aplay', 'Audios/end.wav']) |
time.sleep (0,03) |
Průhledná() |
tisknout „Konec hry… / n“, aktuální_voltáž, „V“ |
#evidence |
time.sleep (1.2) |
dosáhl = 0 |
pro já zařídím (10): |
pokud current_voltage> napětí : |
dosáhl+= 1 |
temp_voltage = napětí |
napětí = proudové napětí |
current_voltage = temp_voltage |
temp_name = jméno |
jméno = aktuální_název |
current_name = název_ temp |
pokud je dosaženo> 0: |
subprocess. Popen (['aplay', 'Audios/record.wav']) |
time.sleep (0,03) |
Průhledná() |
f = otevřené ('záznamy', 'w') |
pro já zařídím (10): |
f.write (jméno ) |
f.write ("\ n") |
f.write (str (napětí )) |
f.write ("\ n") |
f.close () |
Průhledná() |
zobrazit rawlamps_bike.py hostované s ❤ od GitHub
Krok 8: Elektrické schéma:
![Elektrické schéma Elektrické schéma](https://i.howwhatproduce.com/images/002/image-5418-50-j.webp)
![Elektrické schéma Elektrické schéma](https://i.howwhatproduce.com/images/002/image-5418-51-j.webp)
![Elektrické schéma Elektrické schéma](https://i.howwhatproduce.com/images/002/image-5418-52-j.webp)
Arduino a Raspberry Pi 3 jsou napájeny 5V zdrojem s proudem 3A.
Elektrický obvod začíná připojením DC generátoru (připojeného k jízdnímu kolu) k Arduinu přes napěťový filtr složený ze Zenerovy diody 5,3 V, kondenzátoru 10 μF a odporu 1 kΩ - vstup filtru je připojen k svorky generátoru a výstup je připojen k portu A0 a GND ovladače.
Arduino je připojeno k Raspberry prostřednictvím komunikace RX-TX-provádí se pomocí odporového děliče pomocí odporů 10 kΩ (vyžadováno porty ovladačů pracujících při různých napětích).
GPIO Raspberry Pi jsou připojeny k relé zodpovědným za zapnutí lamp. „COM“všech relé byl propojen a připojen k fázi (AC síť) a „N. O“(normálně otevřený) každého relé byl připojen ke každé lampě a neutrál AC sítě byl propojen se všemi lampami. Když je tedy aktivováno GPIO zodpovědné za každé relé, relé se přepne do fáze střídavé sítě a rozsvítí příslušnou kontrolku.
Krok 9: Výsledky:
![Image Image](https://i.howwhatproduce.com/images/002/image-5418-54-j.webp)
![](https://i.ytimg.com/vi/84vHcSFsr9k/hqdefault.jpg)
Po finální montáži projektu bylo ověřeno, že funguje podle očekávání - podle rychlosti, kterou uživatel na kole šlapá, se generuje větší napětí a svítí více lamp.
Doporučuje:
Generování umění z komentářů: 5 kroků (s obrázky)
![Generování umění z komentářů: 5 kroků (s obrázky) Generování umění z komentářů: 5 kroků (s obrázky)](https://i.howwhatproduce.com/images/002/image-5024-43-j.webp)
Generování umění z komentářů: Tento projekt je ambiciózní, kde chceme k tvorbě umění použít některé z nejspornějších částí internetu, sekce komentářů a chatovací místnosti. Chceme také, aby byl projekt snadno dostupný, aby si každý mohl vyzkoušet generování
Nastavitelné napětí DC napájení pomocí regulátoru napětí LM317: 10 kroků
![Nastavitelné napětí DC napájení pomocí regulátoru napětí LM317: 10 kroků Nastavitelné napětí DC napájení pomocí regulátoru napětí LM317: 10 kroků](https://i.howwhatproduce.com/images/010/image-28726-j.webp)
DC napájecí zdroj s nastavitelným napětím pomocí regulátoru napětí LM317: V tomto projektu jsem navrhl jednoduché stejnosměrné napájení s nastavitelným napětím pomocí IC LM317 IC se schématem napájecího obvodu LM317. Protože tento obvod má vestavěný můstkový usměrňovač, můžeme na vstup přímo připojit napájení 220 V/110 V AC
Generování tónů různých druhů pomocí matematických rovnic (MathsMusic) Arduino: 5 kroků
![Generování tónů různých druhů pomocí matematických rovnic (MathsMusic) Arduino: 5 kroků Generování tónů různých druhů pomocí matematických rovnic (MathsMusic) Arduino: 5 kroků](https://i.howwhatproduce.com/images/002/image-5485-40-j.webp)
Generování tónů různých druhů pomocí matematických rovnic (MathsMusic) Arduino: Popis projektu: Začala nová cesta, kde lze nápady snadno implementovat pomocí komunity open source (díky Arduinu). Takže tady je cesta · Podívejte se kolem sebe a sledujte své okolí · Objevte problémy, které je třeba
Hack kola osvětlení kola: 3 kroky
![Hack kola osvětlení kola: 3 kroky Hack kola osvětlení kola: 3 kroky](https://i.howwhatproduce.com/images/002/image-5513-59-j.webp)
Hack Lights Bike Wheel: Viditelnost v noci je důležitým faktorem bezpečnosti jízdy na kole. Ale kdo si dělám srandu, toto světlo je prostě skvělé, a proto ho chcete: D Naštěstí je světlo super jednoduché na stavbu, nevyžaduje žádné speciální nástroje ani dovednosti
Měření stejnosměrného napětí pomocí Arduina a Node-RED: 8 kroků (s obrázky)
![Měření stejnosměrného napětí pomocí Arduina a Node-RED: 8 kroků (s obrázky) Měření stejnosměrného napětí pomocí Arduina a Node-RED: 8 kroků (s obrázky)](https://i.howwhatproduce.com/images/004/image-9432-34-j.webp)
Měření stejnosměrného napětí pomocí Arduina a Node-RED: Existuje mnoho výukových programů Měření stejnosměrného napětí pomocí Arduina, v tomto případě jsem našel návod, který považuji za nejlepší funkční metodu pro měření DC bez vyžadování vstupních hodnot odporu, vyžaduje pouze určitý odpor a multimetr