Orodha ya maudhui:

Kuzalisha Voltage Na Baiskeli ya Ergometer: Hatua 9 (na Picha)
Kuzalisha Voltage Na Baiskeli ya Ergometer: Hatua 9 (na Picha)

Video: Kuzalisha Voltage Na Baiskeli ya Ergometer: Hatua 9 (na Picha)

Video: Kuzalisha Voltage Na Baiskeli ya Ergometer: Hatua 9 (na Picha)
Video: Baiskeli ya magurudumu manne inayotumia nishati ya jua kuudwa na kampuni moja nchini 2024, Julai
Anonim
Kuzalisha Voltage Na Baiskeli ya Ergometer
Kuzalisha Voltage Na Baiskeli ya Ergometer
Kuzalisha Voltage Na Baiskeli ya Ergometer
Kuzalisha Voltage Na Baiskeli ya Ergometer
Kuzalisha Voltage Na Baiskeli ya Ergometer
Kuzalisha Voltage Na Baiskeli ya Ergometer

Ufafanuzi wa mradi huo ulijumuisha mkutano wa "mchezo" kwa lengo la kukanyaga kwenye baiskeli ya ergometer iliyounganishwa na jenereta na mnara wa taa ambazo zinaamilishwa kasi ya injini inapoongezeka - ambayo hufanyika kwa baiskeli. Mfumo huo ulitokana na kusoma - kupitia bandari ya Analog ya Mega ya Arduino - umeme wa papo hapo uliozalishwa, kisha kupeleka data hii kwa Raspberry Pi 3 kupitia mawasiliano ya serial RX-TX na uanzishaji wa taa baadaye kupitia relay.

Hatua ya 1: Vifaa:

  • 1 Raspberry Pi 3;
  • 1 Arduino Mega 2560;
  • 1 Shield Relay na 10 Relays 12 V;
  • Taa 10 za incandescent 127 V;
  • Baiskeli 1 ya Ergometer;
  • Mashine 1 ya Umeme (Jenereta) 12 V;
  • Resistors (1x1kΩ, 2x10kΩ);
  • 1 Electrolytic Capacitor 10 µF;
  • 1 Zener Diode 5.3 V;
  • Cable 1.5 mm (nyekundu, nyeusi, kahawia);
  • Mnara 1 wa MDF na msaada wa taa 10.

Hatua ya 2: Mchoro wa Vitalu vya Mfumo:

Mchoro wa Vitalu vya Mfumo
Mchoro wa Vitalu vya Mfumo

Hatua ya 3: Uendeshaji wa Mfumo:

Mfumo huo unategemea mabadiliko ya nishati ya kinetiki inayotengenezwa wakati wa baiskeli baiskeli katika nishati ya umeme inayohusika na uanzishaji wa relays ambazo zitawasha taa.

Voltage inayotokana na jenereta inasomwa na pini ya Analog ya Arduino na hutumwa kupitia RX-TX kwa Raspberry Pi. Uanzishaji wa relays ni sawa na voltage inayozalishwa - juu ya voltage, upelekaji zaidi utasababishwa na taa zaidi zitawaka.

Hatua ya 4: Vipengele vya Mitambo

Vipengele vya Mitambo
Vipengele vya Mitambo

Ili kuibadilisha jenereta ya DC kwa baiskeli, mfumo wa ukanda ulibidi ubadilishwe na mfumo uliotumika kwenye baiskeli za kawaida (zenye taji, mnyororo na pinion). Sahani ya chuma ilikuwa svetsade kwenye fremu ya baiskeli ili injini iweze kuokolewa na vis. Baada ya hapo, pinion ilikuwa svetsade kwa shimoni la jenereta ili mnyororo uweze kuwekwa, ukiunganisha mfumo wa kanyagio kwa jenereta.

Hatua ya 5: Usomaji wa Voltage:

Kusoma voltage ya jenereta ukitumia Arduino ni muhimu kuunganisha pole chanya ya mashine ya umeme kwa pini ya A0 ya kidhibiti na pole hasi kwa GND - ili kuepuka kuwa kiwango cha juu cha jenereta ni kubwa kuliko 5 V ya Pini za Arduino, kichungi cha voltage kinachotumia capacitor ya 10 µF, kontena la 1 kΩ na diode ya Zener ya 5.3 V ilijengwa na kushikamana kati ya mtawala na jenereta. Firmware iliyobeba Arduino ni rahisi sana na inajumuisha kusoma tu bandari ya analog, kuzidisha thamani iliyosomwa na 0.0048828125 ya kawaida (5/1024, hiyo ni voltage ya GPIO ya Arduino iliyogawanywa na idadi ya bits ya bandari yake ya analog) na kutuma kutofautiana kwa Serial - nambari itapatikana katika kifungu hicho.

Utaratibu wa kuwezesha mawasiliano ya RX-TX katika Raspberry Pi ni ngumu zaidi, na lazima ufuate utaratibu ulioelezewa kwenye kiunga. Kwa kifupi, unahitaji kuhariri faili inayoitwa "inittab" - iliyoko "/ nk / inittab" -, toa maoni kwenye mstari "T0: 23: repawn: / sbin / getty -L ttyAMA0 115200 vt100" (ikiwa faili sio iliyoanzishwa katika OS ya Raspberry, lazima uingize amri: "sudo leafpad /boot/config.txt" na uongeze mstari "enable_uart = 1" hadi mwisho wa faili). Mara hii ikimaliza, lazima ufungue tena Kituo cha LX na uzime Serial na amri "sudo systemctl stop [email protected]" na "sudo systemctl afya [email protected]". Baada ya hapo lazima utekeleze amri "sudo leafpad /boot/cmdline.txt", futa laini "console = serial0, 115200", weka faili na uanze tena kifaa. Ili mawasiliano ya RX-TX iwezekane, maktaba ya Serial lazima iwekwe kwenye Raspberry Pi na amri "sudo apt-get install -f python-serial" na uingize maktaba kwenye nambari kwa kuingiza laini ya "kuagiza serial", kuanzisha serial kwa kuingiza mstari "ser = serial. Serial (" / dev / ttyS0 ", 9600)" na usomaji wa voltage iliyotumwa na Arduino ikitumia amri "ser.readline ()" - nambari kamili iliyotumiwa katika Raspberry itapatikana mwisho wa nakala.

Kufuatia utaratibu ulioelezewa hapo juu, hatua ya kusoma na kutuma voltage imekamilika.

Hatua ya 6: Programu ya Arduino:

Kama ilivyoelezwa hapo awali, nambari inayohusika na kusoma voltage inayotengenezwa wakati wa baiskeli ni rahisi sana.

Kwanza, ni muhimu kuchagua pini ya A0 kama anayehusika na kusoma voltage.

Katika kazi ya "usanidi batili ()", unahitaji kuweka pini A0 kwa INPUT na "pinMode (sensor, INPUT)" amri na uchague kasi ya usafirishaji wa bandari kwa kutumia amri ya "Serial.begin (9600)".

Katika "kitanzi batili ()", kazi ya "Serial.flush ()" hutumiwa kusafisha bafa kila wakati inapomaliza kutuma habari kupitia serial; usomaji wa voltage unafanywa na kazi "AnalogRead (sensa)" - kukumbuka kuwa ni muhimu kubadilisha thamani iliyosomwa na bandari ya analogi kuwa Volts - mchakato uliotajwa katika sehemu ya "voltage ya kusoma" ya nakala hiyo.

Pia, katika kazi ya "batili kitanzi ()", ni muhimu kubadilisha kutofautisha x kutoka kuelea hadi kamba, kwani hii ndiyo njia pekee ya kutuma ubadilishaji kupitia RX-TX. Hatua ya mwisho katika kazi ya kitanzi ni kuchapisha kamba kwenye bandari ya serial ili iweze kutumwa kwa Raspberry - kwa hili lazima utumie kazi ya "Serial.println (y)". Laini "kuchelewesha (100)" imeongezwa kwa nambari tu ili ubadilishaji upelekwe kwa vipindi vya ms 100 - ikiwa wakati huu hauheshimiwi, upakiaji wa serial utatokea, na kusababisha ajali katika programu.

voltage_isoma.ino

sensor ya kuelea = A0;
voidetup () {
pinMode (sensor, INPUT);
Serial. Kuanza (9600);
}
voidloop () {
Serial.flush ();
kuelea x = analog Soma (sensorer) * 0.0048828125 * 16.67;
Kamba y = "";
y + = x;
Serial.println (y);
kuchelewesha (100);
}

tazama rawvoltage_read.ino iliyohifadhiwa na ❤ na GitHub

Hatua ya 7: Programu ya Raspberry Pi 3:

taa_baiskeli.py

kuagiza os #import maktaba ya os (kutumika kusafisha skrini inapohitajika)
kuagiza RPi. GPIOas gpio #import maktaba inayotumika kudhibiti GPIO ya Raspnerry
kuagiza serial maktaba yaport inayohusika na mawasiliano ya serial
kuagiza muda wa kuagiza maktaba ambayo inafanya uwezekano wa kutumia kazi ya kuchelewesha
kuagiza subprocess #import maktaba inayohusika na kucheza nyimbo
# anza mfululizo
ser = serial. Serial ("/ dev / ttyS0", 9600) #fafanua jina la kifaa na kiwango cha baud
Skrini safi
wazi = lambda: mfumo wa os. ('wazi')
pini #seti za kudhibiti relay
gpio.setmode (gpio. BOARD)
usanidi wa gpio (11, gpio. OUT) # taa 10
usanidi wa gpio (12, gpio. OUT) # taa 9
usanidi wa gpio (13, gpio. OUT) # taa 8
usanidi wa gpio (15, gpio. OUT) # taa 7
usanidi wa gpio (16, gpio. OUT) # taa 6
usanidi wa gpio (18, gpio. OUT) # taa 5
usanidi wa gpio (19, gpio. OUT) # taa 4
usanidi wa gpio (21, gpio. OUT) # taa 3
usanidi wa gpio (22, gpio. OUT) # taa 2
usanidi wa gpio (23, gpio. OUT) # taa 1
rekodi za kuanza
jina = ["Hakuna"] * 10
voltage = [0.00] * 10
#soma faili ya kumbukumbu
f = wazi ('rekodi', 'r')
kwa i inrange (10): # alama 10 bora zinaonekana kwenye orodha
jina = f. mstari wa mstari ()
jina = jina [: len (jina ) - 1]
voltage = f. mstari wa mwisho ()
voltage = kuelea (voltage [: len (voltage ) - 1])
f. karibu ()
wazi ()
#weka voltage kubwa
upeo = 50.00
#zima taa
kwa maana mimi inrange (11, 24, 1):
ikiwa i! = 14na i! = 17na i! = 20:
pato la gpio (i, gpio. HIGH) #set to HIGH, relays zimezimwa
#anza
wakatiKweli:
# skrini ya kwanza
chapa "Rekodi: / n"
kwa maana mimi inrange (10):
jina la kuchapisha , ":", voltage , "V"
current_name = raw_input ("Andika jina lako kuanza:")
wazi ()
#Badilisha thamani ya juu
ikiwa sasa_name == "max":
max = pembejeo ("Andika voltage kubwa: (sehemu 2 za desimali)")
wazi ()
mwingine:
# anza onyo
kwa i inrange (11, 24, 1): # kitanzi huanza katika PIN 11 na kusimama katika PIN 24
ikiwa i! = 14na i! = 17na i! = 20: #PIN 14 na 20 ni pini za GND na 20 ni pini 3.3 V
pato la gpio (i, gpio. LOW) #washa taa
saa. kulala (0.5)
k = 10
kwa maana mimi inrange (23, 10, -1):
wazi ()
ikiwa i! = 14na i! = 17na i! = 20:
fungua mchakato. Fungua (['aplay', 'Audios /' + str (k) + '. wav'])
saa. kulala (0.03)
wazi ()
chapa "Andaa! / n", k
saa. kulala (1)
k- = 1
pato la gpio (i, gpio. HIGH) #zima taa (moja kwa moja)
Fungua (['aplay', 'Audios / go.wav']) # inacheza muziki wa kuanza
saa. kulala (0.03)
wazi ()
chapa "NENDA!"
saa. kulala (1)
wazi ()
#voltage imesomwa
voltage ya sasa = 0.00
voltage1 = 0.00
kwa maana mimi inrange (200):
Ingizo la ser.
uliopita = voltage1
voltage1 = kuelea (ser.readlineline)) #kusanya data ya Arduino iliyohamishwa na RX-TX
wazi ()
magazeti voltage1, "V"
ikiwa voltage1> sasa_voltage:
voltage ya sasa = voltage1
# kulingana na voltage inayozalishwa, taa zaidi huangaza.
ikiwa voltage1 <max / 10:
kwa maana mimi inrange (11, 24, 1):
ikiwa i! = 14na i! = 17na i! = 20:
pato la gpio (i, gpio. HIGH)
ikiwa voltage1> = max / 10:
pato la gpio (11, gpio. LOW)
kwa maana mimi inrange (12, 24, 1):
ikiwa i! = 14na i! = 17na i! = 20:
pato la gpio (i, gpio. HIGH)
ikiwa voltage1> = 2 * max / 10:
kwa maana mimi inrange (11, 13, 1):
pato la gpio (i, gpio. LOW)
kwa maana mimi inrange (13, 24, 1):
ikiwa i! = 14na i! = 17na i! = 20:
pato la gpio (i, gpio. HIGH)
ikiwa voltage1> = 3 * max / 10:
kwa maana mimi inrange (11, 14, 1):
pato la gpio (i, gpio. LOW)
kwa maana mimi inrange (15, 24, 1):
ikiwa i! = 17 na i! = 20:
pato la gpio (i, gpio. HIGH)
ikiwa voltage1> = 4 * max / 10:
kwa maana mimi inrange (11, 16, 1):
ikiwa i! = 14:
pato la gpio (i, gpio. LOW)
kwa maana mimi inrange (16, 24, 1):
ikiwa i! = 17 na i! = 20:
pato la gpio (i, gpio. HIGH)
ikiwa voltage1> = 5 * max / 10:
kwa maana mimi inrange (11, 17, 1):
ikiwa i! = 14:
pato la gpio (i, gpio. LOW)
kwa maana mimi inrange (18, 24, 1):
ikiwa i! = 20:
pato la gpio (i, gpio. HIGH)
ikiwa voltage1> = 6 * max / 10:
kwa maana mimi inrange (11, 19, 1):
ikiwa i! = 14na i! = 17:
pato la gpio (i, gpio. LOW)
kwa maana mimi inrange (19, 24, 1):
ikiwa i! = 20:
pato la gpio (i, gpio. HIGH)
ikiwa voltage1> = 7 * max / 10:
kwa maana mimi inrange (11, 20, 1):
ikiwa i! = 14na i! = 17:
pato la gpio (i, gpio. LOW)
kwa maana mimi inrange (21, 24, 1):
pato la gpio (i, gpio. HIGH)
ikiwa voltage1> = 8 * max / 10:
kwa maana mimi inrange (11, 22, 1):
ikiwa i! = 14na i! = 17na i! = 20:
pato la gpio (i, gpio. LOW)
kwa maana mimi napanga (22, 24, 1):
pato la gpio (i, gpio. HIGH)
ikiwa voltage1> = 9 * max / 10:
kwa maana mimi inrange (11, 23, 1):
ikiwa i! = 14na i! = 17na i! = 20:
pato la gpio (i, gpio. LOW)
pato la gpio (23, gpio. HIGH)
ikiwa voltage1> = max:
kwa maana mimi inrange (11, 24, 1):
ikiwa i! = 14na i! = 17na i! = 20:
pato la gpio (i, gpio. LOW)
ikiwa voltage1
kuvunja
#zima taa
kwa maana mimi inrange (11, 24, 1):
ikiwa i! = 14na i! = 17na i! = 20:
pato la gpio (i, gpio. HIGH)
# muziki wa ushindi
ikiwa sasa_voltage> = max:
Kufungua (['aplay', 'Audios / rocky.wav'])
saa. kulala (0.03)
wazi ()
chapisha "NZURI SANA, UMESHINDA!"% (u '\u00c9', u '\u00ca', u '\u00c2')
kwa maana mimi inrange (10):
kwa j inrange (11, 24, 1):
ikiwa j! = 14and j! = 17and j! = 20:
pato la gpio (j, gpio. LOW)
saa. kulala (0.05)
kwa j inrange (11, 24, 1):
ikiwa j! = 14and j! = 17and j! = 20:
pato la gpio (j, gpio. HIGH)
saa. kulala (0.05)
saa. kulala (0.5)
fungua mchakato. Fungua (['aplay', 'Audios / end.wav'])
saa. kulala (0.03)
wazi ()
chapisha "Mchezo wa kumaliza … / n", voltage ya sasa, "V"
#rekodi
saa. kulala (1.2)
imefikiwa = 0
kwa maana mimi inrange (10):
ikiwa sasa_voltage> voltage :
imefikiwa + = 1
voltage_voltage = voltage
voltage = sasa_voltage
sasa_voltage = temp_voltage
temp_name = jina
jina = jina la sasa
jina_la sasa = jina_ la_temp
ikiwa imefikiwa> 0:
Subprocess. Fungua (['aplay', 'Audios / record.wav'])
saa. kulala (0.03)
wazi ()
f = fungua ('rekodi', 'w')
kwa maana mimi inrange (10):
f. andika (jina )
f. andika ("\ n")
f. andika (str (voltage ))
f. andika ("\ n")
f. karibu ()
wazi ()

tazama rawlamps_bike.py iliyohifadhiwa na ❤ na GitHub

Hatua ya 8: Mpango wa Umeme:

Mpango wa Umeme
Mpango wa Umeme
Mpango wa Umeme
Mpango wa Umeme
Mpango wa Umeme
Mpango wa Umeme

Arduino na Raspberry Pi 3 zinaendeshwa na chanzo cha 5V na 3A ya sasa.

Mzunguko wa umeme huanza na unganisho la jenereta ya DC (iliyounganishwa na baiskeli) kwa Arduino kupitia kichungi cha voltage kilicho na diode ya Zener ya 5.3V, capacitor ya 10μF na kontena la 1kΩ - pembejeo ya kichungi imeunganishwa na vituo vya jenereta na pato limeunganishwa na bandari ya A0 na GND ya mtawala.

Arduino imeunganishwa na Raspberry kupitia mawasiliano ya RX-TX - iliyofanywa kupitia mgawanyiko wa kupinga kutumia vipingaji 10kΩ (inahitajika na bandari za watawala zinazofanya kazi kwa voltages tofauti).

GPIO za Raspberry Pi zimeunganishwa na upeanaji unaohusika na kuwasha taa. "COM" ya upeanaji wote iliunganishwa na kushikamana na awamu (gridi ya AC) na "N. O" (kawaida hufunguliwa) ya kila relay iliunganishwa na kila taa na upande wowote wa gridi ya AC uliunganishwa na taa zote. Kwa hivyo, wakati GPIO inayohusika na kila relay inapoamilishwa, relay inabadilishwa kuwa sehemu ya mtandao wa AC na kuwasha taa husika.

Hatua ya 9: Matokeo:

Image
Image

Baada ya mkutano wa mwisho wa mradi huo, ilithibitishwa kuwa ilifanya kazi kama inavyotarajiwa - kulingana na kasi ambayo mtumiaji husogelea kwenye baiskeli, voltage zaidi hutengenezwa na taa nyingi huangaza.

Ilipendekeza: