Talaan ng mga Nilalaman:
- Hakbang 1: Mga Kagamitan:
- Hakbang 2: Diagram ng Mga Block ng System:
- Hakbang 3: Pagpapatakbo ng System:
- Hakbang 4: Mga Aspeto ng Mekaniko
- Hakbang 5: Pagbasa ng Boltahe:
- Hakbang 6: Arduino Programming:
- Hakbang 7: Programming ng Raspberry Pi 3:
- Hakbang 8: Electric Scheme:
- Hakbang 9: Mga Resulta:
Video: Bumubuo ng Boltahe Sa Isang Ergometer Bike: 9 Mga Hakbang (na may Mga Larawan)
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
Ang pagpapaliwanag ng proyekto ay binubuo sa pagpupulong ng isang "laro" na may layunin na mag-pedal sa isang ergometer bike na konektado sa isang generator at isang tower ng lampara na pinapagana habang tumataas ang bilis ng engine - na nangyayari ayon sa pagbibisikleta ng bisikleta. Ang sistema ay batay sa pagbabasa - sa pamamagitan ng isang analog port ng isang Arduino Mega - nabuo ang instant boltahe, pagkatapos ay ihinahatid ang data na ito sa isang Raspberry Pi 3 sa pamamagitan ng serial na komunikasyon sa RX-TX at ang kasunod na pag-aktibo ng mga lampara sa pamamagitan ng relay.
Hakbang 1: Mga Kagamitan:
- 1 Raspberry Pi 3;
- 1 Arduino Mega 2560;
- 1 Relay Shield na may 10 Relay 12 V;
- 10 Mga Ilaw na maliwanag na maliwanag 127 V;
- 1 Ergometer Bike;
- 1 Electrical Machine (Generator) 12 V;
- Mga resistorista (1x1kΩ, 2x10kΩ);
- 1 Electrolytic Capacitor 10 µF;
- 1 Zener Diode 5.3 V;
- 1.5 mm Cable (pula, itim, kayumanggi);
- 1 MDF tower na may suporta para sa 10 lampara.
Hakbang 2: Diagram ng Mga Block ng System:
Hakbang 3: Pagpapatakbo ng System:
Ang sistema ay batay sa pagbabago ng kinetic energy na nabuo kapag binibisikleta ang bisikleta sa elektrisidad na elektroniko na responsable para sa pag-aktibo ng mga relay na magpapasara sa mga lampara.
Ang boltahe na nabuo ng generator ay nababasa ng isang analog pin ng Arduino at ipinadala sa pamamagitan ng RX-TX sa Raspberry Pi. Ang pag-aktibo ng mga relay ay proporsyonal sa nabuo na boltahe - mas mataas ang boltahe, mas maraming mga relay ang mai-trigger at mas maraming mga ilawan ang mag-iilaw.
Hakbang 4: Mga Aspeto ng Mekaniko
Upang makasal na mekanikal ang generator ng DC sa bisikleta, ang sistema ng sinturon ay kailangang palitan ng sistemang ginamit sa mga karaniwang bisikleta (binubuo ng isang korona, kadena at pinion). Ang isang metal plate ay hinangin sa frame ng bisikleta upang ang engine ay ma-secure ng mga turnilyo. Pagkatapos nito, ang pinion ay hinangin sa generator shaft upang mailagay ang kadena, magkakaugnay sa pedal system sa generator.
Hakbang 5: Pagbasa ng Boltahe:
Upang mabasa ang boltahe ng generator gamit ang Arduino ay kinakailangan upang ikonekta ang positibong poste ng de-koryenteng makina sa A0 pin ng controller at ang negatibong poste sa GND - upang maiwasan na ang maximum na boltahe ng generator ay mas malaki kaysa sa 5 V ng Ang mga pin ng Arduino, isang filter ng boltahe na gumagamit ng isang kapasitor na 10 µF, isang risistor na 1 kΩ at isang Zener diode na 5.3 V ay itinayo at konektado sa pagitan ng controller at ng generator. Ang firmware na na-load sa Arduino ay napaka-simple at binubuo lamang ng pagbabasa ng isang analog port, i-multiply ang halagang binasa ng pare-pareho na 0.0048828125 (5/1024, iyon ang boltahe ng GPIO ng Arduino na hinati sa bilang ng mga piraso ng analog port nito) at ipinapadala ang variable sa Serial - ang code ay magagamit sa artikulo.
Ang pamamaraan para sa pagpapagana ng komunikasyon ng RX-TX sa Raspberry Pi ay medyo mas kumplikado, at dapat mong sundin ang pamamaraang inilarawan sa link. Sa madaling sabi, kailangan mong i-edit ang isang file na tinatawag na "inittab" - na matatagpuan sa "/ etc / inittab" -, puna ang linya na "T0: 23: respawn: / sbin / getty -L ttyAMA0 115200 vt100" (kung ang file ay hindi itinatag sa OS ng Raspberry, dapat mong ipasok ang utos: "sudo leafpad /boot/config.txt" at idagdag ang linya na "paganahin ang_uart = 1" sa dulo ng file). Kapag tapos na ito, dapat mong buksan muli ang LX Terminal at huwag paganahin ang Serial gamit ang mga utos na "sudo systemctl stop [email protected]" at "sudo systemctl huwag paganahin ang [email protected]". Pagkatapos nito kailangan mong isagawa ang utos na "sudo leafpad /boot/cmdline.txt", tanggalin ang linya na "console = serial0, 115200", i-save ang file at i-restart ang aparato. Upang maging posible ang komunikasyon ng RX-TX, dapat na mai-install ang Serial library sa Raspberry Pi na may utos na "sudo apt-get install -f python-serial" at i-import ang library sa code sa pamamagitan ng pagpasok ng linya na "import serial", pinasimulan ang serial sa pamamagitan ng pagpasok ng linya na "ser = serial. Serial (" / dev / ttyS0 ", 9600)" at ang pagbasa ng boltahe na ipinadala ng Arduino gamit ang utos na "ser.readline ()" - ang buong code na ginamit sa Raspberry ay magagamit magagamit sa pagtatapos ng artikulo.
Kasunod sa pamamaraang inilarawan sa itaas, ang hakbang na basahin at ipadala ang boltahe ay kumpleto na.
Hakbang 6: Arduino Programming:
Tulad ng naunang nakasaad, ang code na responsable para sa pagbabasa ng boltahe na nabuo kapag ang pagbibisikleta ay napaka-simple.
Una, kinakailangan upang piliin ang A0 pin bilang responsable para sa pagbabasa ng boltahe.
Sa pagpapaandar na "void setup ()", kailangan mong itakda ang pin A0 sa INPUT na may "pinMode (sensor, INPUT)" na utos at piliin ang bilis ng paghahatid ng serial port gamit ang "Serial.begin (9600)" na utos.
Sa "void loop ()", ginagamit ang function na "Serial.flush ()" upang i-clear ang buffer tuwing tinatapos nito ang pagpapadala ng impormasyon sa pamamagitan ng serial; ang pagbasa ng boltahe ay ginaganap ng pagpapaandar na "analogRead (sensor)" - na naaalala na kinakailangan upang i-convert ang halagang binasa ng analog port sa Volts - proseso na binanggit sa seksyong "pagbasa ng boltahe" ng artikulo.
Gayundin, sa pagpapaandar na "void loop ()", kinakailangan upang i-convert ang variable x mula sa float hanggang sa string, dahil ito ang tanging paraan upang maipadala ang variable sa pamamagitan ng RX-TX. Ang huling hakbang sa pagpapaandar ng loop ay upang mai-print ang string sa serial port upang maipadala ito sa Raspberry - para dito kailangan mong gamitin ang pagpapaandar na "Serial.println (y)". Ang linya na "pagkaantala (100)" ay naidagdag sa code lamang upang ang variable ay maipadala sa mga agwat na 100 ms - kung ang oras na ito ay hindi iginagalang, magaganap ang Serial overload, na bumubuo ng mga posibleng pag-crash sa programa.
boltahe_read.ino
float sensor = A0; |
voidsetup () { |
pinMode (sensor, INPUT); |
Serial.begin (9600); |
} |
voidloop () { |
Serial.flush (); |
float x = analogRead (sensor) * 0.0048828125 * 16.67; |
String y = ""; |
y + = x; |
Serial.println (y); |
pagkaantala (100); |
} |
tingnan ang rawvoltage_read.ino na naka-host sa ❤ ng GitHub
Hakbang 7: Programming ng Raspberry Pi 3:
lamp_bike.py
i-import ang os #import ang os library (ginamit upang i-clear ang screen kung kinakailangan) |
i-import ang RPi. GPIOas gpio #import library na ginamit upang makontrol ang Raspnerry’s GPIO |
i-import ang serial #import library na responsable para sa serial na komunikasyon |
i-import ang oras #import library na ginagawang posible na gamitin ang pagpapaandar na pagpapaandar |
i-import ang subprocess #import library na responsable para sa pag-play ng mga kanta |
#start serial |
ser = serial. Serial ("/ dev / ttyS0", 9600) # tukuyin ang pangalan ng aparato at ang rate ng baud |
#malinaw na screen |
malinaw = lambda: os.system ('malinaw') |
#set pin para sa relay control |
gpio.setmode (gpio. BOARD) |
gpio.setup (11, gpio. OUT) # lampas 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) # lampas 6 |
gpio.setup (18, gpio. OUT) # lamp 5 |
gpio.setup (19, gpio. OUT) # lampas 4 |
gpio.setup (21, gpio. OUT) # lampas 3 |
gpio.setup (22, gpio. OUT) # ilaw 2 |
gpio.setup (23, gpio. OUT) # lampas 1 |
#start record |
pangalan = ["Wala"] * 10 |
boltahe = [0.00] * 10 |
# basahin ang mga file ng mga talaan |
f = bukas ('talaan', 'r') |
para sa irrange (10): # ang 10 pinakamahusay na mga marka ay lilitaw sa listahan |
pangalan = f.readline () |
pangalan = pangalan [: len (pangalan ) - 1] |
boltahe = f.readline () |
boltahe = float (boltahe [: len (boltahe ) - 1]) |
f.close () |
malinaw () |
#itakda ang max boltahe |
max = 50.00 |
#tapatay ang mga lampara |
para sa inrange ko (11, 24, 1): |
kung ako! = 14at ako! = 17at ako! = 20: |
gpio.output (i, gpio. HIGH) #set to HIGH, naka-off ang mga relay |
#start |
habang Totoo: |
#initial na screen |
i-print ang "Mga talaan: / n" |
para sa inrange ko (10): |
pangalan ng print , ":", boltahe , "V" |
current_name = raw_input ("Isulat ang iyong pangalan upang magsimula:") |
malinaw () |
#Baguhin ang max na halaga |
kung kasalukuyang_name == "max": |
max = input ("Isulat ang max boltahe: (2 decimal na lugar)") |
malinaw () |
iba pa: |
#start babala |
para sa irrange (11, 24, 1): Ang # loop ay nagsisimula sa PIN 11 at huminto sa PIN 24 |
kung i! = 14and i! = 17and i! = 20: #PIN 14 at 20 ay mga pin ng GND at ang 20 ay isang 3.3 V pin |
gpio.output (i, gpio. LOW) #turn on the lamp |
oras. pagtulog (0.5) |
k = 10 |
para sa inrange ko (23, 10, -1): |
malinaw () |
kung ako! = 14at ako! = 17at ako! = 20: |
subprocess. Popen (['aplay', 'Audios /' + str (k) + '. wav']) |
oras. tulog (0.03) |
malinaw () |
i-print ang "Maghanda! / n", k |
oras. tulog (1) |
k- = 1 |
gpio.output (i, gpio. HIGH) #turn off ang mga lampara (isa-isa) |
subprocess. Popen (['aplay', 'Audios / go.wav']) #play ang start music |
oras. tulog (0.03) |
malinaw () |
i-print ang "GO!" |
oras. tulog (1) |
malinaw () |
nabasa ang #voltage |
kasalukuyang_voltage = 0.00 |
boltahe1 = 0.00 |
para sa inrange ko (200): |
ser.flushInput () |
nakaraang = boltahe1 |
voltage1 = float (ser.readline ()) # nagkokolekta ng data ng Arduino na inilipat ng RX-TX |
malinaw () |
boltahe ng print1, "V" |
kung voltage1> kasalukuyang_voltage: |
kasalukuyang_voltage = boltahe1 |
# depende sa nabuo na boltahe, mas maraming mga ilaw ang nag-iilaw. |
kung boltahe1 <max / 10: |
para sa inrange ko (11, 24, 1): |
kung ako! = 14at ako! = 17at ako! = 20: |
gpio.output (i, gpio. HIGH) |
kung boltahe1> = max / 10: |
gpio.output (11, gpio. LOW) |
para sa inrange ko (12, 24, 1): |
kung ako! = 14at ako! = 17at ako! = 20: |
gpio.output (i, gpio. HIGH) |
kung boltahe1> = 2 * max / 10: |
para sa inrange ko (11, 13, 1): |
gpio.output (i, gpio. LOW) |
para sa inrange ko (13, 24, 1): |
kung ako! = 14at ako! = 17at ako! = 20: |
gpio.output (i, gpio. HIGH) |
kung boltahe1> = 3 * max / 10: |
para sa inrange ko (11, 14, 1): |
gpio.output (i, gpio. LOW) |
para sa inrange ko (15, 24, 1): |
kung ako! = 17at ako! = 20: |
gpio.output (i, gpio. HIGH) |
kung boltahe1> = 4 * max / 10: |
para sa inrange ko (11, 16, 1): |
kung ako! = 14: |
gpio.output (i, gpio. LOW) |
para sa inrange ko (16, 24, 1): |
kung ako! = 17at ako! = 20: |
gpio.output (i, gpio. HIGH) |
kung boltahe1> = 5 * max / 10: |
para sa inrange ko (11, 17, 1): |
kung ako! = 14: |
gpio.output (i, gpio. LOW) |
para sa inrange ko (18, 24, 1): |
kung ako! = 20: |
gpio.output (i, gpio. HIGH) |
kung boltahe1> = 6 * max / 10: |
para sa inrange ko (11, 19, 1): |
kung ako! = 14at ako! = 17: |
gpio.output (i, gpio. LOW) |
para sa inrange ko (19, 24, 1): |
kung ako! = 20: |
gpio.output (i, gpio. HIGH) |
kung boltahe1> = 7 * max / 10: |
para sa inrange ko (11, 20, 1): |
kung ako! = 14at ako! = 17: |
gpio.output (i, gpio. LOW) |
para sa inrange ko (21, 24, 1): |
gpio.output (i, gpio. HIGH) |
kung boltahe1> = 8 * max / 10: |
para sa inrange ko (11, 22, 1): |
kung ako! = 14at ako! = 17at ako! = 20: |
gpio.output (i, gpio. LOW) |
para sa inrange ko (22, 24, 1): |
gpio.output (i, gpio. HIGH) |
kung boltahe1> = 9 * max / 10: |
para sa inrange ko (11, 23, 1): |
kung ako! = 14at ako! = 17at ako! = 20: |
gpio.output (i, gpio. LOW) |
gpio.output (23, gpio. HIGH) |
kung voltage1> = max: |
para sa inrange ko (11, 24, 1): |
kung ako! = 14at ako! = 17at ako! = 20: |
gpio.output (i, gpio. LOW) |
kung boltahe1 |
pahinga |
#tapatay ang mga lampara |
para sa inrange ko (11, 24, 1): |
kung ako! = 14at ako! = 17at ako! = 20: |
gpio.output (i, gpio. HIGH) |
#victory na musika |
kung kasalukuyang_voltage> = max: |
subprocess. Popen (['aplay', 'Audios / rocky.wav']) |
oras. tulog (0.03) |
malinaw () |
i-print ang "NAPAKA MAHUSAY, GUSTO MO!"% (u '\u00c9', u '\u00ca', u '\u00c2') |
para sa inrange ko (10): |
para sa j inrange (11, 24, 1): |
kung j! = 14and j! = 17and j! = 20: |
gpio.output (j, gpio. LOW) |
oras. tulog (0.05) |
para sa j inrange (11, 24, 1): |
kung j! = 14and j! = 17and j! = 20: |
gpio.output (j, gpio. HIGH) |
oras. tulog (0.05) |
oras. pagtulog (0.5) |
subprocess. Popen (['aplay', 'Audios / end.wav']) |
oras. tulog (0.03) |
malinaw () |
i-print ang "End game… / n", kasalukuyang_voltage, "V" |
#records |
oras. tulog (1.2) |
umabot = 0 |
para sa inrange ko (10): |
kung kasalukuyang_voltage> boltahe : |
umabot sa + = 1 |
temp_voltage = boltahe |
boltahe = kasalukuyang_voltage |
current_voltage = temp_voltage |
temp_name = pangalan |
pangalan = kasalukuyang_name |
kasalukuyang_name = temp_name |
kung umabot> 0: |
subprocess. Popen (['aplay', 'Audios / record.wav']) |
oras. tulog (0.03) |
malinaw () |
f = buksan ('talaan', 'w') |
para sa inrange ko (10): |
f.write (pangalan ) |
f.write ("\ n") |
f.write (str (boltahe )) |
f.write ("\ n") |
f.close () |
malinaw () |
tingnan ang rawlamps_bike.py naka-host sa ❤ ng GitHub
Hakbang 8: Electric Scheme:
Ang Arduino at ang Raspberry Pi 3 ay pinalakas ng isang 5V na mapagkukunan na may kasalukuyang 3A.
Nagsisimula ang circuit ng kuryente sa koneksyon ng DC generator (isinama sa bisikleta) sa Arduino sa pamamagitan ng isang boltahe na filter na binubuo ng isang Zener diode na 5.3V, isang kapasitor ng 10μF at isang resistor ng 1kΩ - ang input ng filter ay konektado sa ang mga terminal ng generator at ang output ay konektado sa A0 port at sa GND ng controller.
Ang Arduino ay konektado sa Raspberry sa pamamagitan ng komunikasyon sa RX-TX - ginanap sa pamamagitan ng isang resistive divider gamit ang 10kΩ resistors (kinakailangan ng mga port ng mga kumokontrol na tumatakbo sa iba't ibang mga voltages).
Ang mga GPIO ng Raspberry Pi ay konektado sa mga relay na responsable para sa pagbukas ng mga lampara. Ang "COM" ng lahat ng mga relay ay magkakaugnay at konektado sa phase (AC grid) at ang "N. O" (karaniwang bukas) ng bawat relay ay konektado sa bawat lampara at ang walang kinikilingan ng AC grid ay magkakaugnay sa lahat ng mga ilawan. Kaya, kapag ang GPIO na responsable para sa bawat relay ay naaktibo, ang relay ay inililipat sa yugto ng AC network at binuksan ang kani-kanilang lampara.
Hakbang 9: Mga Resulta:
Matapos ang pangwakas na pagpupulong ng proyekto, napatunayan na gumana ito tulad ng inaasahan - alinsunod sa bilis ng pag-pedal ng gumagamit sa bisikleta, mas maraming boltahe ang nabuo at mas maraming mga ilaw ang nag-iilaw.
Inirerekumendang:
Bumubuo ng Art Mula sa Mga Komento: 5 Mga Hakbang (na may Mga Larawan)
Bumubuo ng Sining Mula sa Mga Komento: Ang proyektong ito ay isang ambisyoso, kung saan nais naming gamitin ang ilan sa mga pinaka-kaduda-dudang bahagi ng internet, mga seksyon ng komento at mga chatroom, upang lumikha ng sining. Nais din naming gawing madaling ma-access ang proyekto upang ang sinuman ay maaaring subukan ang kanilang kamay sa pagbuo
Monitor ng Boltahe para sa Mga Baterya ng Mataas na Boltahe: 3 Mga Hakbang (na may Mga Larawan)
Monitor ng Boltahe para sa Mga Baterya ng Mataas na Boltahe: Sa gabay na ito ipapaliwanag ko sa iyo kung paano ko itinayo ang aking boltahe na monitor ng baterya para sa aking electric longboard. I-mount ito subalit nais mo at ikonekta ang dalawang wires lamang sa iyong baterya (Gnd at Vcc). Ipinapalagay ng gabay na ito na ang boltahe ng iyong baterya ay lumampas sa 30 volt, w
Bumubuo ng Mga Tono ng Iba't ibang Mga Uri Gamit ang Mga Equation na Matematika (MathsMusic) Arduino: 5 Mga Hakbang
Bumubuo ng Mga Tono ng Iba't Ibang Mga Uri Gamit ang Mga Equation ng Matematika (MathsMusic) Arduino: Paglalarawan ng Proyekto: Nagsimula ang bagong paglalakbay kung saan madaling maipatupad ang mga ideya gamit ang open source na pamayanan (Salamat sa Arduino). Kaya narito ang isang paraan · Tumingin sa paligid ng iyong sarili at obserbahan ang iyong nakapaligid · Tuklasin ang Mga Problema na kailangang
Simpleng Arduino-based Ergometer Display Na May Pagkakaiba ng Feedback: 7 Mga Hakbang (na may Mga Larawan)
Simpleng Arduino-based Ergometer Display Na May Pagkakaiba ng Feedback: Ang pag-eehersisyo sa cardio ay nakakainip, lalo na, kapag nag-eehersisyo sa loob ng bahay. Sinubukan ng maraming mga umiiral na proyekto na mapagaan ito sa pamamagitan ng paggawa ng mga cool na bagay tulad ng pagkabit sa ergometer sa isang game console, o kahit na gayahin ang isang tunay na pagsakay sa bisikleta sa VR. Nakakatuwa bilang thes
Sapat na Bumubuo ng Lakas: 10 Hakbang (na may Mga Larawan)
Sapat na Bumubuo ng Lakas: Ipapakita sa iyo ng Maituturo na ito kung paano lumikha ng isang sapatos na bumubuo ng kuryente. Ginagawa ito sa pamamagitan ng paggamit ng iyong lakas kapag naglalakad ka at ginawang elektrisidad ito. Kung nawalan ka ng kuryente sa iyong cell phone sa gitna ng kahit saan, kung gayon