Sisällysluettelo:
- Vaihe 1: Materiaalit:
- Vaihe 2: Järjestelmälohkokaavio:
- Vaihe 3: Järjestelmän käyttö:
- Vaihe 4: Mekaniikan näkökohdat
- Vaihe 5: Jännitteen lukeminen:
- Vaihe 6: Arduino -ohjelmointi:
- Vaihe 7: Raspberry Pi 3 -ohjelmointi:
- Vaihe 8: Sähköjärjestelmä:
- Vaihe 9: Tulokset:
Video: Jännitteen luominen ergometripyörällä: 9 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Hankkeen kehittäminen koostui "pelin" kokoamisesta, jonka tarkoituksena oli polkea ergometripyörässä, joka on kytketty generaattoriin ja lamputorniin, jotka aktivoituvat moottorin nopeuden kasvaessa - mikä tapahtuu polkupyörän polkemisen yhteydessä. Järjestelmä perustui Arduino Megan analogisen portin kautta luetun hetkellisen jännitteen lukemiseen, sen jälkeen näiden tietojen siirtämiseen Raspberry Pi 3 -laitteeseen sarjaliikenteen RX-TX-tiedonsiirron kautta ja lamppujen aktivointiin releen kautta.
Vaihe 1: Materiaalit:
- 1 Vadelma Pi 3;
- 1 Arduino Mega 2560;
- 1 relevahti 10 releellä 12 V;
- 10 hehkulamppua 127 V;
- 1 Ergometripyörä;
- 1 sähkökone (generaattori) 12 V;
- Vastukset (1x1kΩ, 2x10kΩ);
- 1 elektrolyyttikondensaattori 10 µF;
- 1 Zener -diodi 5,3 V;
- 1,5 mm Kaapeli (punainen, musta, ruskea);
- 1 MDF -torni, joka tukee 10 lamppua.
Vaihe 2: Järjestelmälohkokaavio:
Vaihe 3: Järjestelmän käyttö:
Järjestelmä perustuu polkupyörän pyöräilyn aikana syntyvän kineettisen energian muuttamiseen sähköenergiaksi, joka on vastuussa releiden aktivoinnista, jotka sytyttävät lamput.
Generaattorin tuottama jännite luetaan Arduinon analogisella tapilla ja lähetetään RX-TX: n kautta Raspberry Pi: hen. Releiden aktivointi on verrannollinen syntyvään jännitteeseen - mitä korkeampi jännite, sitä enemmän releitä laukeaa ja enemmän lamppuja syttyy.
Vaihe 4: Mekaniikan näkökohdat
Jotta DC -generaattori voidaan kytkeä mekaanisesti polkupyörään, vyöjärjestelmä oli korvattava tavallisissa polkupyörissä (kruunu, ketju ja hammaspyörä) käytetyllä järjestelmällä. Pyörän runkoon hitsattiin metallilevy, jotta moottori voidaan kiinnittää ruuveilla. Tämän jälkeen hammaspyörä hitsattiin generaattorin akseliin niin, että ketju voitiin sijoittaa kytkemällä poljinjärjestelmä generaattoriin.
Vaihe 5: Jännitteen lukeminen:
Generaattorin jännitteen lukeminen Arduinon avulla on välttämätöntä kytkeä sähkökoneen positiivinen napa ohjaimen A0 -napaan ja negatiivinen napa GND: hen - jotta generaattorin maksimijännite ei ylitä 5 V: n jännitettä Säätimen ja generaattorin väliin rakennettiin ja liitettiin Arduino -nastat, 10 µF: n kondensaattoria käyttävä jännitesuodatin, 1 kΩ: n vastus ja 5,3 V: n Zener -diodi. Arduinoon ladattu laiteohjelmisto on hyvin yksinkertainen ja koostuu vain analogisen portin lukemisesta, kerro arvo lukemalla vakio 0,0048828125 (5/1024, eli Arduinon GPIO -jännite jaettuna sen analogisen portin bittimäärällä) ja lähettämällä muuttuja sarjaan - koodi on saatavilla artikkelissa.
Menettely RX-TX-viestinnän ottamiseksi käyttöön Raspberry Pi: ssä on hieman monimutkaisempi, ja sinun on noudatettava linkissä kuvattua menettelyä. Lyhyesti, sinun on muokattava tiedosto nimeltä inittab -joka sijaitsee kohteessa//etc/inittab -, kommentoi riviä "T0: 23: respawn:/sbin/getty -L ttyAMA0 115200 vt100" (jos tiedosto ei ole Raspberry -käyttöjärjestelmässä, sinun on annettava komento “sudo leafpad /boot/config.txt” ja lisättävä rivi”enable_uart = 1” tiedoston loppuun). Kun tämä on tehty, sinun on avattava LX-pääte uudelleen ja poistettava sarja käytöstä komennoilla "sudo systemctl stop [email protected]" ja "sudo systemctl disable [email protected]". Tämän jälkeen sinun on suoritettava komento "sudo leafpad /boot/cmdline.txt", poistettava rivi "console = serial0, 115200", tallennettava tiedosto ja käynnistettävä laite uudelleen. Jotta RX-TX-tiedonsiirto olisi mahdollista, sarjakirjasto on asennettava Raspberry Pi -komentoon komennolla "sudo apt-get install -f python-serial" ja tuotava kirjasto koodiin lisäämällä rivin "import serial", alustetaan sarja lisäämällä rivi "ser = serial. Serial (" / dev / ttyS0 ", 9600)" ja Arduinon lähettämän jännitteen lukema komennolla "ser.readline ()" - koko käytetty koodi Raspberry -julkaisussa on saatavilla artikkelin lopussa.
Edellä kuvatun menettelyn mukaisesti luku- ja lähetysjännitteen vaihe on valmis.
Vaihe 6: Arduino -ohjelmointi:
Kuten aiemmin todettiin, pyöräilyn aikana syntyvän jännitteen lukemisesta vastaava koodi on hyvin yksinkertainen.
Ensinnäkin on tarpeen valita A0 -nastainen vastuu jännitteen lukemisesta.
"Void setup ()" -toiminnossa sinun on asetettava nasta A0 arvoon INPUT komennolla "pinMode (sensor, INPUT)" ja valittava sarjaportin lähetysnopeus komennolla "Serial.begin (9600)".
"Void loop ()" -toiminnolla "Serial.flush ()" -toimintoa käytetään puskurin tyhjentämiseen aina, kun se lopettaa tietojen lähettämisen sarjaportin kautta; jännitteen lukeminen suoritetaan toiminnolla "analogRead (sensor)" - muistaa, että analogisen portin lukema arvo on muunnettava voltteiksi - prosessi, joka viitataan artikkelin "lukujännite" -osioon.
Lisäksi "void loop ()" -funktiossa on muutettava muuttuja x floatista merkkijonoksi, koska tämä on ainoa tapa lähettää muuttuja RX-TX: n kautta. Silmukkatoiminnon viimeinen vaihe on tulostaa merkkijono sarjaporttiin, jotta se voidaan lähettää Raspberrylle - tätä varten sinun on käytettävä "Serial.println (y)" -toimintoa. Rivi "delay (100)" on lisätty koodiin vain siten, että muuttuja lähetetään 100 ms: n välein - jos tätä aikaa ei noudateta, sarja ylikuormittuu ja aiheuttaa mahdollisia kaatumisia ohjelmassa.
jännite_luku.ino
kelluva anturi = A0; |
voidsetup () { |
pinMode (anturi, TULO); |
Sarja.alku (9600); |
} |
voidloop () { |
Sarja.huuhtelu (); |
float x = analoginen luku (anturi)*0,0048828125*16,67; |
Jono y = ""; |
y+= x; |
Sarja.println (y); |
viive (100); |
} |
katso rawvoltage_read.ino, jota isännöi GitHub ❤ kanssa
Vaihe 7: Raspberry Pi 3 -ohjelmointi:
lamput_bike.py
tuoda os #tuoda käyttöjärjestelmäkirjasto (käytetään näytön tyhjentämiseen tarvittaessa) |
tuoda RPi. GPIOs gpio #import -kirjastoa, jota käytetään Raspnerryn GPIO: n hallintaan |
tuo sarjaliikenteestä vastaava sarja #tuonti -kirjasto |
tuontiaika #tuonti kirjasto, joka mahdollistaa viivefunktion käytön |
Tuo aliprosessi #tuonti kirjasto, joka vastaa kappaleiden toistamisesta |
#aloita sarja |
ser = sarja. Sarja ("/dev/ttyS0", 9600) #määritä laitteen nimi ja siirtonopeus |
#selkeä näyttö |
kirkas = lambda: os.system ('kirkas') |
#aseta nastat releohjausta varten |
gpio.setmode (gpio. BOARD) |
gpio.setup (11, gpio. OUT) #lamppu 10 |
gpio.setup (12, gpio. OUT) #lamppu 9 |
gpio.setup (13, gpio. OUT) #lamppu 8 |
gpio.setup (15, gpio. OUT) #lamppu 7 |
gpio.setup (16, gpio. OUT) #lamppu 6 |
gpio.setup (18, gpio. OUT) #lamppu 5 |
gpio.setup (19, gpio. OUT) #lamppu 4 |
gpio.setup (21, gpio. OUT) #lamppu 3 |
gpio.setup (22, gpio. OUT) #lamppu 2 |
gpio.setup (23, gpio. OUT) #lamppu 1 |
#aloita tietueet |
nimi = ["Ei mitään"]*10 |
jännite = [0.00]*10 |
#lue tietueet -tiedosto |
f = avoin ('tietueet', 'r') |
i inrange (10): #kymmenen parasta pistettä näkyvät luettelossa |
nimi = f.readline () |
nimi = nimi [: len (nimi )-1] |
jännite = f.readline () |
jännite = kelluva (jännite [: len (jännite )-1]) |
f. sulje () |
asia selvä() |
#aseta maksimijännite |
enintään = 50,00 |
#sammuta lamput |
i inrange (11, 24, 1): |
jos i! = 14ja i! = 17ja i! = 20: |
gpio.output (i, gpio. HIGH) #asetus HIGH, releet sammutetaan |
#alkaa |
Vaikka totta: |
#aloitusnäyttö |
tulosta "Tietueet: / n" |
i inrange (10): |
tulostusnimi , ":", jännite , "V" |
current_name = raw_input ("Kirjoita nimesi alkuun:") |
asia selvä() |
#Muuta enimmäisarvoa |
jos nykyinen_nimi == "max": |
max = tulo ("Kirjoita maksimijännite: (2 desimaalia)") |
asia selvä() |
muu: |
#aloita varoitus |
i inrange (11, 24, 1): #silmukka alkaa PIN -koodista 11 ja pysähtyy PIN -koodissa 24 |
jos i! = 14ja i! = 17ja i! = 20: #PIN 14 ja 20 ovat GND -nastoja ja 20 on 3,3 V: n nasta |
gpio.output (i, gpio. LOW) #kytke lamput päälle |
aika. unta (0,5) |
k = 10 |
i inrange (23, 10, -1): |
asia selvä() |
jos i! = 14ja i! = 17ja i! = 20: |
aliprosessi. avaa (['aplay', 'Audios/'+str (k)+'. wav']) |
aika. unta (0,03) |
asia selvä() |
tulosta "Valmistaudu! / n", k |
time.sleep (1) |
k- = 1 |
gpio.output (i, gpio. HIGH) #sammuta lamput (yksi kerrallaan) |
aliprosessi. Popen (['aplay', 'Audios/go.wav']) #toistaa aloitusmusiikin |
aika. unta (0,03) |
asia selvä() |
tulosta "GO!" |
time.sleep (1) |
asia selvä() |
#jännite luettu |
nykyinen_jännite = 0,00 |
jännite1 = 0,00 |
i inrange (200): |
ser.flushInput () |
edellinen = jännite 1 |
jännite1 = kelluva (ser.readline ()) #kerää RX-TX: n siirtämät Arduinon tiedot |
asia selvä() |
tulostusjännite1, "V" |
jos jännite1> nykyinen_jännite: |
nykyinen_jännite = jännite 1 |
# syntyvästä jännitteestä riippuen enemmän lamppuja syttyy. |
jos jännite1 <max/10: |
i inrange (11, 24, 1): |
jos i! = 14ja i! = 17ja i! = 20: |
gpio.output (i, gpio. HIGH) |
jos jännite1> = max/10: |
gpio.output (11, gpio. LOW) |
i inrange (12, 24, 1): |
jos i! = 14ja i! = 17ja i! = 20: |
gpio.output (i, gpio. HIGH) |
jos jännite1> = 2*max/10: |
i inrange (11, 13, 1): |
gpio.output (i, gpio. LOW) |
i inrange (13, 24, 1): |
jos i! = 14ja i! = 17ja i! = 20: |
gpio.output (i, gpio. HIGH) |
jos jännite1> = 3*max/10: |
i inrange (11, 14, 1): |
gpio.output (i, gpio. LOW) |
i inrange (15, 24, 1): |
jos minä! = 17ja minä! = 20: |
gpio.output (i, gpio. HIGH) |
jos jännite1> = 4*max/10: |
i inrange (11, 16, 1): |
jos minä! = 14: |
gpio.output (i, gpio. LOW) |
i inrange (16, 24, 1): |
jos minä! = 17ja minä! = 20: |
gpio.output (i, gpio. HIGH) |
jos jännite1> = 5*max/10: |
i inrange (11, 17, 1): |
jos minä! = 14: |
gpio.output (i, gpio. LOW) |
i inrange (18, 24, 1): |
jos minä! = 20: |
gpio.output (i, gpio. HIGH) |
jos jännite1> = 6*max/10: |
i inrange (11, 19, 1): |
jos minä! = 14ja minä! = 17: |
gpio.output (i, gpio. LOW) |
i inrange (19, 24, 1): |
jos minä! = 20: |
gpio.output (i, gpio. HIGH) |
jos jännite1> = 7*max/10: |
i inrange (11, 20, 1): |
jos minä! = 14ja minä! = 17: |
gpio.output (i, gpio. LOW) |
i inrange (21, 24, 1): |
gpio.output (i, gpio. HIGH) |
jos jännite1> = 8*max/10: |
i inrange (11, 22, 1): |
jos i! = 14ja i! = 17ja i! = 20: |
gpio.output (i, gpio. LOW) |
i inrange (22, 24, 1): |
gpio.output (i, gpio. HIGH) |
jos jännite1> = 9*max/10: |
i inrange (11, 23, 1): |
jos i! = 14ja i! = 17ja i! = 20: |
gpio.output (i, gpio. LOW) |
gpio.output (23, gpio. HIGH) |
jos jännite1> = max: |
i inrange (11, 24, 1): |
jos i! = 14ja i! = 17ja i! = 20: |
gpio.output (i, gpio. LOW) |
jos jännite 1 |
tauko |
#sammuta lamput |
i inrange (11, 24, 1): |
jos i! = 14ja i! = 17ja i! = 20: |
gpio.output (i, gpio. HIGH) |
#voittoisa musiikki |
jos nykyinen_jännite> = max: |
aliprosessi. Popen (['aplay', 'Audios/rocky.wav']) |
aika. unta (0,03) |
asia selvä() |
tulosta "ERITTÄIN HYVÄ, VOIT!"% (u '\u00c9', u '\u00ca', u '\u00c2') |
i inrange (10): |
j inrange (11, 24, 1): |
jos j! = 14ja j! = 17ja j! = 20: |
gpio.output (j, gpio. LOW) |
aika. unta (0,05) |
j inrange (11, 24, 1): |
jos j! = 14ja j! = 17ja j! = 20: |
gpio.output (j, gpio. HIGH) |
aika. unta (0,05) |
aika. unta (0,5) |
aliprosessi. Popen (['aplay', 'Audios/end.wav']) |
aika. unta (0,03) |
asia selvä() |
tulosta "Lopeta peli… / n", current_voltage, "V" |
#tiedot |
time.sleep (1.2) |
saavutettu = 0 |
i inrange (10): |
jos nykyinen_jännite> jännite : |
saavutti+= 1 |
lämpötila_jännite = jännite |
jännite = nykyinen_jännite |
nykyinen_jännite = lämpötila_jännite |
temp_name = nimi |
nimi = nykyinen_nimi |
nykyinen_nimi = väliaikainen_nimi |
jos saavutettu> 0: |
aliprosessi. Popen (['aplay', 'Audios/record.wav']) |
aika. unta (0,03) |
asia selvä() |
f = avoin ('tietueet', 'w') |
i inrange (10): |
f. kirjoittaa (nimi ) |
f.write ("\ n") |
f. kirjoita (str (jännite )) |
f.write ("\ n") |
f. sulje () |
asia selvä() |
katso rawlamps_bike.py, jota isännöi GitHub ❤ kanssa
Vaihe 8: Sähköjärjestelmä:
Arduino ja Raspberry Pi 3 saavat virtansa 5 V: n lähteestä, jonka virta on 3A.
Sähköpiiri alkaa DC -generaattorin (kytketty polkupyörään) liittämisestä Arduinoon jännitesuodattimen kautta, joka koostuu 5,3 V: n Zener -diodista, 10 μF: n kondensaattorista ja 1 kΩ: n vastuksesta - suodattimen tulo on kytketty generaattorin liittimet ja lähtö on kytketty ohjaimen A0 -porttiin ja GND: hen.
Arduino on kytketty Raspberryyn RX-TX-tiedonsiirron kautta-suoritetaan resistiivisen jakajan kautta käyttämällä 10 kΩ: n vastuksia (vaaditaan eri jännitteillä toimivien ohjaimien porttien kautta).
Raspberry Pi: n GPIO: t on kytketty releisiin, jotka vastaavat lamppujen sytyttämisestä. Kaikkien releiden "COM" oli kytketty yhteen ja kytketty vaiheeseen (AC -verkko) ja kunkin releen "N. O" (normaalisti auki) oli kytketty jokaiseen lamppuun ja AC -verkon neutraali oli kytketty kaikkiin lamppuihin. Näin ollen, kun jokaisesta releestä vastaava GPIO aktivoidaan, rele kytketään vaihtoverkon vaiheeseen ja sytytetään vastaava lamppu.
Vaihe 9: Tulokset:
Projektin lopullisen kokoonpanon jälkeen varmistettiin, että se toimi odotetulla tavalla - sen nopeuden mukaan, jolla käyttäjä polkee pyörää, syntyy enemmän jännitettä ja enemmän lamppuja.
Suositeltava:
Virtalähteen taajuuden ja jännitteen mittaus Arduinolla: 6 vaihetta
Virtalähteen taajuuden ja jännitteen mittaus Arduinolla: Johdanto: Tämän projektin tavoitteena on mitata syöttötaajuutta ja jännitettä, joka on 220-240 volttia ja 50 Hz täällä Intiassa. Käytin Arduinoa signaalin sieppaamiseen ja taajuuden ja jännitteen laskemiseen, voit käyttää mitä tahansa muuta mikroyhteyttä
Kannettavan älypeilin luominen/meikkilaatikkoyhdistelmän luominen: 8 vaihetta
Kannettavan älypeilin luominen/meikkilaatikkoyhdistelmän luominen: Viimeisenä projektina Davisin & Elkinsin yliopisto, päätin suunnitella ja luoda meikkimatkalaukun sekä suuremman peilin ja käyttää vadelmapiä ja taikuuspeiliohjelmistoa, joka toimisi porttina
DC - DC -jännitteen askelkytkimen tila Buck -jännitteenmuunnin (LM2576/LM2596): 4 vaihetta
DC-DC-jännitteen askelkytkentätila Buck-jännitteenmuunnin (LM2576/LM2596): Tehokkaan buck-muuntimen tekeminen on vaikeaa työtä ja jopa kokeneet insinöörit vaativat useita malleja oikean ratkaisun löytämiseksi. on DC-DC-tehomuunnin, joka laskee jännitettä (samalla kun
DC-jännitteen mittaus Arduinolla ja solmulla-PUNAINEN: 8 vaihetta (kuvilla)
DC-jännitteen mittaaminen Arduinolla ja Node-RED: llä: Arduinolla on paljon opetusohjelmia DC-jännitteen mittaamiseen, tässä tapauksessa löysin opetusohjelman, jonka pidän parhaana toiminnallisena menetelmänä DC: n mittaamiseksi ilman vastuksen syöttöarvoja, vaatii vain jonkin verran vastusta ja yleismittari
Bookhuddle.comin, verkkosivuston luominen kirjan tietojen löytämiseen, järjestämiseen ja jakamiseen, luominen: 10 vaihetta
Bookhuddle.comin, verkkosivuston luominen kirjan tietojen löytämiseen, järjestämiseen ja jakamiseen, luominen: Tässä viestissä kuvataan vaiheet, jotka liittyvät luomaan ja käynnistämään Bookhuddle.com -verkkosivusto, jonka tarkoituksena on auttaa lukijoita löytämään, järjestämään ja jakamaan kirjan tietoja. koskisi muiden verkkosivustojen kehittämistä