Satura rādītājs:
- 1. solis: materiāli:
- 2. darbība. Sistēmas bloku diagramma:
- 3. darbība: sistēmas darbība:
- 4. solis: mehānikas aspekti
- 5. solis: sprieguma nolasīšana:
- 6. darbība: Arduino programmēšana:
- 7. darbība: Raspberry Pi 3 programmēšana:
- 8. solis: elektriskā shēma:
- 9. darbība. Rezultāti:
Video: Sprieguma radīšana ar velosipēdu Ergometrs: 9 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Projekta izstrāde sastāvēja no “spēles” montāžas ar mērķi pedāļot ergometra velosipēdā, kas savienots ar ģeneratoru, un lukturu tornī, kas tiek aktivizēts, palielinoties motora apgriezieniem - tas notiek velosipēda pedāļiem. Sistēmas pamatā bija nolasīšana-caur Arduino Mega analogo portu-ģenerētais momentālais spriegums, pēc tam šo datu pārraide uz Raspberry Pi 3, izmantojot sērijas RX-TX sakarus, un sekojoša lampu aktivizēšana, izmantojot releju.
1. solis: materiāli:
- 1 aveņu Pi 3;
- 1 Arduino Mega 2560;
- 1 releja vairogs ar 10 relejiem 12 V;
- 10 kvēlspuldzes 127 V;
- 1 Ergometra velosipēds;
- 1 elektriskā mašīna (ģenerators) 12 V;
- Rezistori (1x1kΩ, 2x10kΩ);
- 1 elektrolītiskais kondensators 10 µF;
- 1 Zenera diode 5,3 V;
- 1,5 mm kabelis (sarkans, melns, brūns);
- 1 MDF tornis ar atbalstu 10 lampām.
2. darbība. Sistēmas bloku diagramma:
3. darbība: sistēmas darbība:
Sistēmas pamatā ir kinētiskās enerģijas pārveidošana, kas rodas, braucot ar velosipēdu, elektriskā enerģijā, kas ir atbildīga par releju aktivizēšanu, kas ieslēgs lampas.
Ģeneratora radīto spriegumu nolasa Arduino analogā tapa un caur RX-TX to nosūta uz Raspberry Pi. Releju aktivizēšana ir proporcionāla radītajam spriegumam - jo augstāks spriegums, jo vairāk releju tiks iedarbināti un iedegsies vairāk lampu.
4. solis: mehānikas aspekti
Lai mehāniski savienotu līdzstrāvas ģeneratoru ar velosipēdu, jostas sistēma bija jāaizstāj ar sistēmu, ko izmanto parastajos velosipēdos (sastāv no vainaga, ķēdes un zobrata). Velosipēda rāmim tika metināta metāla plāksne, lai motoru varētu nostiprināt ar skrūvēm. Pēc tam zobrats tika sametināts pie ģeneratora vārpstas, lai varētu novietot ķēdi, savienojot pedāļu sistēmu ar ģeneratoru.
5. solis: sprieguma nolasīšana:
Lai nolasītu ģeneratora spriegumu, izmantojot Arduino, ir nepieciešams savienot elektriskās mašīnas pozitīvo polu ar kontroliera A0 tapu un negatīvo polu ar GND - lai izvairītos no tā, ka ģeneratora maksimālais spriegums ir lielāks par 5 V Starp kontrolieri un ģeneratoru tika izveidotas un savienotas Arduino tapas, sprieguma filtrs, izmantojot 10 µF kondensatoru, 1 kΩ rezistors un Zener diode 5,3 V. Arduino ielādētā programmaparatūra ir ļoti vienkārša un sastāv tikai no analogā porta nolasīšanas, reiziniet nolasīto vērtību ar konstantu 0,0048828125 (5/1024, tas ir, Arduino GPIO spriegums dalīts ar tā analogā porta bitu skaitu) un nosūtot mainīgais uz sēriju - kods būs pieejams rakstā.
RX-TX sakaru iespējošanas procedūra Raspberry Pi ir nedaudz sarežģītāka, un jums ir jāievēro saitē aprakstītā procedūra. Īsumā, jums ir jārediģē fails ar nosaukumu “inittab”, kas atrodas mapē “/etc/inittab” -, komentējiet rindiņu “T0: 23: respawn:/sbin/getty -L ttyAMA0 115200 vt100” (ja fails nav izveidota Raspberry OS, jums jāievada komanda: “sudo leafpad /boot/config.txt” un faila beigās jāpievieno rindiņa “enable_uart = 1”). Kad tas ir izdarīts, jums ir jāatver LX terminālis un jāatspējo sērija ar komandām "sudo systemctl stop [email protected]" un "sudo systemctl disable [email protected]". Pēc tam jums jāizpilda komanda "sudo leafpad /boot/cmdline.txt", izdzēsiet rindu "console = serial0, 115200", saglabājiet failu un restartējiet ierīci. Lai būtu iespējama RX-TX komunikācija, sērijas bibliotēka ir jāinstalē Raspberry Pi ar komandu "sudo apt-get install -f python-serial" un jāimportē bibliotēka kodā, ievietojot rindu "importēt sēriju", inicializējot sēriju, ievietojot rindu "ser = serial. Serial (" / dev / ttyS0 ", 9600)" un Arduino nosūtītā sprieguma nolasījumu, izmantojot komandu "ser.readline ()" - visu izmantoto kodu in Raspberry būs pieejams raksta beigās.
Pēc iepriekš aprakstītās procedūras lasīšanas un nosūtīšanas sprieguma darbība ir pabeigta.
6. darbība: Arduino programmēšana:
Kā minēts iepriekš, kods, kas atbild par riteņbraukšanas laikā radītā sprieguma nolasīšanu, ir ļoti vienkāršs.
Pirmkārt, par sprieguma nolasīšanu ir jāizvēlas A0 tapa.
Funkcijā "void setup ()" jums ir jāiestata pin A0 uz INPUT ar komandu "pinMode (sensors, INPUT)" un jāizvēlas seriālā porta pārraides ātrums, izmantojot komandu "Serial.begin (9600)".
In "void loop ()", "Serial.flush ()" funkcija tiek izmantota, lai notīrītu buferi katru reizi, kad tā pārtrauc informācijas sūtīšanu, izmantojot seriālo; sprieguma nolasīšanu veic funkcija "analogRead (sensors)" - atceroties, ka analogā porta nolasītā vērtība ir jāpārvērš par voltiem - process, kas minēts raksta sadaļā "lasīšanas spriegums".
Funkcijā "void loop ()" ir jāpārveido mainīgais x no pludiņa uz virkni, jo tas ir vienīgais veids, kā nosūtīt mainīgo, izmantojot RX-TX. Cilpas funkcijas pēdējais solis ir izdrukāt virkni seriālajā portā, lai to varētu nosūtīt Raspberry - šim nolūkam jāizmanto funkcija "Serial.println (y)". Rinda "kavēšanās (100)" kodam ir pievienota tikai tāpēc, lai mainīgais tiktu nosūtīts ar 100 ms intervālu - ja šis laiks netiek ievērots, notiks sērijas pārslodze, radot iespējamās avārijas programmā.
Voltage_read.ino
pludiņa sensors = A0; |
voidsetup () { |
pinMode (sensors, IEEJA); |
Sērijas sākums (9600); |
} |
voidloop () { |
Serial.flush (); |
pludiņš x = analogRead (sensors)*0,0048828125*16,67; |
String y = ""; |
y+= x; |
Sērijas.println (y); |
kavēšanās (100); |
} |
apskatīt rawvoltage_read.ino, ko mitina GitHub ar ❤
7. darbība: Raspberry Pi 3 programmēšana:
lampas_bike.py
importēt os #importēt OS bibliotēku (vajadzības gadījumā izmanto ekrāna notīrīšanai) |
importēt RPi. GPIO kā gpio #import bibliotēku, ko izmanto, lai kontrolētu Raspnerry GPIO |
importēt sērijas #import bibliotēku, kas atbild par seriālo komunikāciju |
importēšanas laiks #import bibliotēka, kas ļauj izmantot aizkaves funkciju |
importēt apakšprocesu #import bibliotēka, kas atbild par dziesmu atskaņošanu |
#sākt seriālu |
ser = serial. Serial ("/dev/ttyS0", 9600) #definējiet ierīces nosaukumu un pārraides ātrumu |
#skaidrs ekrāns |
skaidrs = lambda: os.system ('skaidrs') |
#iestatiet tapas releja vadībai |
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) #lamp 7 |
gpio.setup (16, gpio. OUT) #lampa 6 |
gpio.setup (18, gpio. OUT) #lampa 5 |
gpio.setup (19, gpio. OUT) #lamp 4 |
gpio.setup (21, gpio. OUT) #lamp 3 |
gpio.setup (22, gpio. OUT) #lamp 2 |
gpio.setup (23, gpio. OUT) #lamp 1 |
#sākt ierakstus |
nosaukums = ["Nav"]*10 |
spriegums = [0.00]*10 |
#lasīt ierakstu failu |
f = atvērts ('ieraksti', 'r') |
par i inrange (10): #10 labākie rādītāji parādās sarakstā |
nosaukums = f.readline () |
vārds = vārds [: len (vārds )-1] |
spriegums = f.readline () |
spriegums = pludiņš (spriegums [: len (spriegums )-1]) |
f. tuvu () |
skaidrs () |
#iestatiet maksimālo spriegumu |
maksimums = 50,00 |
#izslēdziet lampas |
par i inrange (11, 24, 1): |
ja es! = 14un i! = 17un i! = 20: |
gpio.output (i, gpio. HIGH) #iestatīts uz HIGH, releji ir izslēgti |
#sākt |
kamēr patiesība: |
#sākuma ekrāns |
drukāt "Ieraksti: / n" |
es saku (10): |
drukas nosaukums , ":", spriegums , "V" |
current_name = raw_input ("Uzrakstiet savu vārdu, lai sāktu:") |
skaidrs () |
#Mainīt maksimālo vērtību |
ja pašreizējais_nosaukums == "max": |
max = ievade ("Uzrakstiet maksimālo spriegumu: (2 zīmes aiz komata)") |
skaidrs () |
cits: |
#sākt brīdinājumu |
par i inrange (11, 24, 1): #cikls sākas ar PIN 11 un beidzas ar PIN 24 |
ja i! = 14un i! = 17un i! = 20: #PIN 14 un 20 ir GND tapas un 20 ir 3,3 V tapa |
gpio.output (i, gpio. LOW) #ieslēdziet lampas |
miega laiks (0,5) |
k = 10 |
par i inrange (23, 10, -1): |
skaidrs () |
ja es! = 14un i! = 17un i! = 20: |
apakšprocess. Popen (['aplay', 'Audios/'+str (k)+'. wav']) |
miega laiks (0,03) |
skaidrs () |
drukāt "Sagatavot! / n", k |
laiks. miegs (1) |
k- = 1 |
gpio.output (i, gpio. HIGH) #izslēdziet lampas (pa vienam) |
apakšprocess. Popen (['aplay', 'Audios/go.wav']) #atskaņo sākuma mūziku |
miega laiks (0,03) |
skaidrs () |
izdrukāt "GO!" |
laiks. miegs (1) |
skaidrs () |
#sprieguma lasīšana |
strāvas spriegums = 0,00 |
spriegums1 = 0,00 |
man inrange (200): |
ser.flushInput () |
iepriekšējais = spriegums1 |
spriegums1 = pludiņš (ser.readline ()) #savāc Arduino datus, ko pārsūta RX-TX |
skaidrs () |
drukas spriegums1, "V" |
ja spriegums1> strāvas spriegums: |
strāva_ spriegums = spriegums1 |
# atkarībā no radītā sprieguma iedegas vairāk lampu. |
ja spriegums1 <max/10: |
jo es saku (11, 24, 1): |
ja es! = 14un i! = 17un i! = 20: |
gpio.output (i, gpio. HIGH) |
ja spriegums1> = max/10: |
gpio.output (11, gpio. LOW) |
I inrange (12, 24, 1): |
ja es! = 14un i! = 17un i! = 20: |
gpio.output (i, gpio. HIGH) |
ja spriegums1> = 2*max/10: |
man irange (11, 13, 1): |
gpio.output (i, gpio. LOW) |
par i inrange (13, 24, 1): |
ja es! = 14un i! = 17un i! = 20: |
gpio.output (i, gpio. HIGH) |
ja spriegums1> = 3*max/10: |
man irange (11, 14, 1): |
gpio.output (i, gpio. LOW) |
man irange (15, 24, 1): |
ja es! = 17 un es! = 20: |
gpio.output (i, gpio. HIGH) |
ja spriegums1> = 4*max/10: |
man irange (11, 16, 1): |
ja es! = 14: |
gpio.output (i, gpio. LOW) |
par i inrange (16, 24, 1): |
ja es! = 17 un es! = 20: |
gpio.output (i, gpio. HIGH) |
ja spriegums1> = 5*max/10: |
jo es saku (11, 17, 1): |
ja es! = 14: |
gpio.output (i, gpio. LOW) |
par i inrange (18, 24, 1): |
ja es! = 20: |
gpio.output (i, gpio. HIGH) |
ja spriegums1> = 6*max/10: |
jo es saku (11, 19, 1): |
ja es! = 14 un es! = 17: |
gpio.output (i, gpio. LOW) |
par i inrange (19, 24, 1): |
ja es! = 20: |
gpio.output (i, gpio. HIGH) |
ja spriegums1> = 7*max/10: |
man irange (11, 20, 1): |
ja es! = 14 un es! = 17: |
gpio.output (i, gpio. LOW) |
par i inrange (21, 24, 1): |
gpio.output (i, gpio. HIGH) |
ja spriegums1> = 8*max/10: |
jo es saku (11, 22, 1): |
ja es! = 14un i! = 17un i! = 20: |
gpio.output (i, gpio. LOW) |
jo es saku (22, 24, 1): |
gpio.output (i, gpio. HIGH) |
ja spriegums1> = 9*max/10: |
jo es saku (11, 23, 1): |
ja es! = 14un i! = 17un i! = 20: |
gpio.output (i, gpio. LOW) |
gpio.output (23, gpio. HIGH) |
ja spriegums1> = max: |
jo es saku (11, 24, 1): |
ja es! = 14un i! = 17un i! = 20: |
gpio.output (i, gpio. LOW) |
ja spriegums1 |
pārtraukums |
#izslēdziet lampas |
par i inrange (11, 24, 1): |
ja es! = 14un i! = 17un i! = 20: |
gpio.output (i, gpio. HIGH) |
#uzvaras mūzika |
ja strāvas spriegums> = max: |
apakšprocess. Popen (['aplay', 'Audios/rocky.wav']) |
miega laiks (0,03) |
skaidrs () |
drukāt "ĻOTI LABI, JŪS VARĒJĀT!"% (u '\u00c9', u '\u00ca', u '\u00c2') |
es saku (10): |
j inrange (11, 24, 1): |
ja j! = 14 un j! = 17 un j! = 20: |
gpio.output (j, gpio. LOW) |
miega laiks (0,05) |
j inrange (11, 24, 1): |
ja j! = 14 un j! = 17 un j! = 20: |
gpio.output (j, gpio. HIGH) |
miega laiks (0,05) |
miega laiks (0,5) |
apakšprocess. Popen (['aplay', 'Audios/end.wav']) |
miega laiks (0,03) |
skaidrs () |
drukāt "Beigt spēli… / n", strāvas spriegums, "V" |
#ieraksti |
time.sleep (1.2) |
sasniedza = 0 |
es saku (10): |
ja strāvas spriegums> spriegums : |
sasniedza+= 1 |
temp_voltage = spriegums |
spriegums = strāvas spriegums |
strāvas spriegums = temp_priegums |
temp_name = vārds |
vārds = pašreizējais_vārds |
pašreizējais_nosaukums = pagaidu_nosaukums |
ja sasniegts> 0: |
apakšprocess. Popen (['aplay', 'Audios/record.wav']) |
miega laiks (0,03) |
skaidrs () |
f = atvērts ('ieraksti', 'w') |
es saku (10): |
f. rakstīt (vārds ) |
f.write ("\ n") |
f. rakstīt (str (spriegums )) |
f.write ("\ n") |
f. tuvu () |
skaidrs () |
apskatīt rawlamps_bike.py, ko mitina GitHub ar ❤
8. solis: elektriskā shēma:
Arduino un Raspberry Pi 3 baro 5V avots ar 3A strāvu.
Elektriskā ķēde sākas ar līdzstrāvas ģeneratora (savienots ar velosipēdu) pievienošanu Arduino caur sprieguma filtru, kas sastāv no Zener diodes 5,3 V, 10 μF kondensatora un 1 kΩ rezistora - filtra ieeja ir savienota ar ģeneratora spailēm, un izeja ir savienota ar A0 portu un kontroliera GND.
Arduino ir savienots ar Raspberry, izmantojot RX-TX sakarus-tiek veikts, izmantojot pretestības dalītāju, izmantojot 10 kΩ rezistorus (nepieciešami kontrolieru portiem, kas darbojas ar dažādu spriegumu).
Raspberry Pi GPIO ir savienoti ar relejiem, kas atbild par lampu ieslēgšanu. Visu releju “COM” bija savstarpēji savienoti un savienoti ar fāzi (maiņstrāvas tīkls), un katra releja “N. O” (parasti atvērts) tika pievienots katram lukturim, un maiņstrāvas tīkla neitrāls tika savienots ar visiem lukturiem. Tādējādi, kad tiek aktivizēts par katru releju atbildīgais GPIO, relejs tiek pārslēgts uz maiņstrāvas tīkla fāzi un iedegas attiecīgā lampiņa.
9. darbība. Rezultāti:
Pēc projekta galīgās montāžas tika pārbaudīts, vai tas darbojas, kā paredzēts - atkarībā no ātruma, kādā lietotājs velosipēdā velk pedāļus, tiek radīts lielāks spriegums un iedegas vairāk lampu.
Ieteicams:
DC - līdzstrāvas sprieguma pazemināšanas slēdža režīms Buck sprieguma pārveidotājs (LM2576/LM2596): 4 soļi
DC-līdzstrāvas sprieguma pazemināšanas slēdža režīms Buck sprieguma pārveidotājs (LM2576/LM2596): ļoti efektīva buks pārveidotāja izgatavošana ir grūts darbs, un pat pieredzējušiem inženieriem ir vajadzīgi vairāki dizaini, lai tie nonāktu pie pareizā. ir līdzstrāvas līdzstrāvas pārveidotājs, kas samazina spriegumu (vienlaikus palielinot
Regulējams sprieguma līdzstrāvas padeve, izmantojot sprieguma regulatoru LM317: 10 soļi
Regulējams sprieguma līdzstrāvas padeve, izmantojot LM317 sprieguma regulatoru: Šajā projektā esmu izstrādājis vienkāršu regulējama sprieguma līdzstrāvas barošanas avotu, izmantojot LM317 IC ar LM317 barošanas shēmas shēmu. Tā kā šai shēmai ir iebūvēts tilta taisngriezis, lai mēs varētu tieši savienot 220V/110V maiņstrāvas padevi pie ieejas
OHLOOM - atvērta aparatūras radīšana: 9 soļi (ar attēliem)
OHLOOM - atvērta aparatūras audums: Šis projekts parāda, kā atkārtoti izmantot paliktni un izgatavot no koka dēļiem stelles, izmantojot dažas papildu detaļas (aušanas ķemmi un sprūdrata pārnesumus) no 3D printera. Izmantojot divus nedaudz pretrunīgus materiālus, piemēram, koks, ko bieži redz
Elektroniskas skaņas radīšana ar vadošu apmetumu: 9 soļi (ar attēliem)
Elektroniskas skaņas radīšana ar vadošu apmetumu: Pēc blorgggg projekta par vadošu silikona ķēdi, es nolēmu sākt savu eksperimentu ar oglekļa šķiedru. Izrādās, formu, kas izlieta no ģipša, kas iepildīts ar oglekļa šķiedru, var izmantot arī kā mainīgu rezistoru! Ar dažiem vara stieņiem un
Mūzikas radīšana, izmantojot Atari Punk konsoli: 5 soļi (ar attēliem)
Mūzikas radīšana, izmantojot Atari Punk konsoli: Dažas senās analogās shēmas mūsdienās ir tikpat populāras kā pirms gadu desmitiem. Bieži vien tie vienkāršas vienkāršības ziņā viegli pārspēj mikroshēmas un citus digitālās shēmas risinājumus. Forress to ir izdarījis vēlreiz. Viņa mīļākais piemērs ir Atari