Obsah:

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)

Video: Generování napětí pomocí Ergometrického kola: 9 kroků (s obrázky)

Video: Generování napětí pomocí Ergometrického kola: 9 kroků (s obrázky)
Video: První funkční 10kW generátor v Česku! 4K, life hack music included, 100% free energy, infinity power 2024, Červenec
Anonim
Generování napětí pomocí Ergometrického kola
Generování napětí pomocí Ergometrického kola
Generování napětí pomocí Ergometrického kola
Generování napětí pomocí Ergometrického kola
Generování napětí pomocí Ergometrického kola
Generování napětí pomocí Ergometrického kola

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ů

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

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
Elektrické schéma
Elektrické schéma
Elektrické schéma
Elektrické schéma

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

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: