![Ergometrli Velosipedlə Gərginlik Yaratmaq: 9 Adım (Şəkillərlə) Ergometrli Velosipedlə Gərginlik Yaratmaq: 9 Adım (Şəkillərlə)](https://i.howwhatproduce.com/images/002/image-5418-44-j.webp)
Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-23 12:54
![Erqometrli Velosipedlə Gərginlik Yaratmaq Erqometrli Velosipedlə Gərginlik Yaratmaq](https://i.howwhatproduce.com/images/002/image-5418-45-j.webp)
![Ergometrli Velosipedlə Gərginlik Yaratmaq Ergometrli Velosipedlə Gərginlik Yaratmaq](https://i.howwhatproduce.com/images/002/image-5418-46-j.webp)
![Erqometrli Velosipedlə Gərginlik Yaratmaq Erqometrli Velosipedlə Gərginlik Yaratmaq](https://i.howwhatproduce.com/images/002/image-5418-47-j.webp)
Layihənin hazırlanması, velosiped pedalına bağlı olaraq meydana gələn, mühərrikin sürəti artdıqca işə düşən generatora və lampa qülləsinə qoşulmuş erqometrli velosipeddə pedal çəkmək məqsədi ilə "oyun" qurmaqdan ibarət idi. Sistem oxunuşa-Arduino Mega-nın analog portu vasitəsilə-yaradılan ani gərginliyə, sonra bu məlumatları ardıcıl RX-TX rabitəsi vasitəsi ilə Raspberry Pi 3-ə ötürməyə və sonradan röle vasitəsilə lampaların aktivləşdirilməsinə əsaslanır.
Addım 1: Materiallar:
- 1 Raspberry Pi 3;
- 1 Arduino Mega 2560;
- 10 Relay 12 V ilə 1 Relay Shield;
- 10 közərmə lampası 127 V;
- 1 erqometrli velosiped;
- 1 Elektrik Maşını (Generator) 12 V;
- Rezistorlar (1x1kΩ, 2x10kΩ);
- 1 elektrolitik kondansatör 10 µF;
- 1 Zener Diod 5.3 V;
- 1,5 mm kabel (qırmızı, qara, qəhvəyi);
- 10 lampa dəstəyi olan 1 MDF qülləsi.
Addım 2: Sistem Blokları Şeması:
![Sistem Blokları Şeması Sistem Blokları Şeması](https://i.howwhatproduce.com/images/002/image-5418-48-j.webp)
Addım 3: Sistemin İşlənməsi:
Sistem, velosiped sürərkən meydana gələn kinetik enerjinin lampaları yandıracaq rölelərin aktivləşdirilməsindən məsul olan elektrik enerjisinə çevrilməsinə əsaslanır.
Jeneratörün yaratdığı gərginlik Arduino analoq pinindən oxunur və RX-TX vasitəsilə Raspberry Pi-yə göndərilir. Rölelərin aktivləşdirilməsi yaranan gərginliklə mütənasibdir - gərginlik nə qədər çox olarsa, o qədər çox röle tetiklenir və daha çox lampa yanar.
Addım 4: Mexanika aspektləri
![Mexanika aspektləri Mexanika aspektləri](https://i.howwhatproduce.com/images/002/image-5418-49-j.webp)
DC generatorunu velosipedə mexaniki olaraq qoşmaq üçün kəmər sistemi adi velosipedlərdə istifadə olunan sistemlə (tac, zəncir və pinyondan ibarət) əvəz edilməli idi. Mühərrikin vintlərlə bərkidilməsi üçün velosiped çərçivəsinə metal bir lövhə qaynaqlandı. Bundan sonra, pinyon, zəncirin yerləşdirilə bilməsi üçün generator milinə qaynaqlandı, pedal sistemini generatora bağladı.
Addım 5: Gərginliyin oxunması:
Arduino istifadə edərək generatorun gərginliyini oxumaq üçün elektrik maşınının müsbət qütbünü idarəedicinin A0 pininə və mənfi qütbünü GND -yə bağlamaq lazımdır - generatorun maksimum gərginliyinin 5 V -dan böyük olmamasının qarşısını almaq üçün. Arduino pinləri, nəzarətçi ilə generator arasında 10 µF kondansatör, 1 kΩ rezistor və 5.3 V Zener diodundan istifadə edən bir gərginlik filtri quruldu. Arduino -ya yüklənmiş proqram təminatı çox sadədir və yalnız analoq portu oxumaqdan ibarətdir, oxunan dəyəri 0.0048828125 (5/1024, yəni Arduinonun GPIO gərginliyi analoq portunun bit sayına bölünür) ilə çoxaltmaq və Seriala dəyişən - kod məqalədə mövcud olacaq.
Raspberry Pi-də RX-TX ünsiyyətini təmin etmək proseduru bir az daha mürəkkəbdir və linkdə təsvir olunan prosedura əməl etməlisiniz. Qısaca, "/etc/inittab" da yerləşən "inittab" adlı bir faylı redaktə etməlisiniz, "T0: 23: respawn:/sbin/getty -L ttyAMA0 115200 vt100" sətrini şərh edin (əgər fayl deyilsə) Raspberry OS -də qurulduqda, "sudo leafpad /boot/config.txt" əmrini daxil etməli və faylın sonuna "enable_uart = 1" sətrini əlavə etməlisiniz). Bunu etdikdən sonra, LX Terminalını yenidən açmalı və "sudo systemctl stop [email protected]" və "sudo systemctl [email protected]'i deaktiv et" əmrləri ilə Serialı deaktiv etməlisiniz. Bundan sonra "sudo leafpad /boot/cmdline.txt" əmrini yerinə yetirməlisiniz, "console = serial0, 115200" sətrini silin, faylı qeyd edin və cihazı yenidən başladın. RX-TX ünsiyyətinin mümkün olması üçün Serial kitabxanası "sudo apt-get install -f python-serial" əmri ilə Raspberry Pi-də qurulmalı və "import serial" xəttini daxil edərək kitabxananı koda daxil etməlidir., "ser = serial. Serial (" / dev / ttyS0 ", 9600)" xəttini və "ser.readline ()" əmrini istifadə edərək Arduino tərəfindən göndərilən gərginliyin oxunması ilə serialı işə salmaq - istifadə olunan tam kod Raspberry -də məqalənin sonunda təqdim olunacaq.
Yuxarıda təsvir olunan prosedura uyğun olaraq, oxuma və göndərmə gərginliyi mərhələsi tamamlanır.
Addım 6: Arduino Proqramlaşdırması:
Daha əvvəl də qeyd edildiyi kimi, velosiped sürərkən yaranan gərginliyi oxumaqdan məsul olan kod çox sadədir.
Birincisi, gərginliyin oxunmasından məsul olan A0 pinini seçmək lazımdır.
"Void setup ()" funksiyasında "pinMode (sensor, INPUT)" əmri ilə A0 pinini GİRİŞ olaraq təyin etməli və "Serial.begin (9600)" əmrindən istifadə edərək serial port ötürmə sürətini seçməlisiniz.
"Void loop ()" da "Serial.flush ()" funksiyası hər dəfə serial vasitəsilə məlumat göndərilməsini dayandırdıqda tamponu silmək üçün istifadə olunur; Gərginliyin oxunması "analogRead (sensor)" funksiyası tərəfindən yerinə yetirilir - analoq port tərəfindən oxunan dəyəri Volta çevirmək lazım olduğunu xatırlayaraq - məqalənin "oxunan gərginlik" bölməsində göstərilən proses.
Ayrıca, "void loop ()" funksiyasında, dəyişəni RX-TX vasitəsilə göndərməyin yeganə yolu olduğu üçün x dəyişənini float-dan stringə çevirmək lazımdır. Döngə funksiyasındakı son addım, serialı portda çap etməkdir ki, Moruqa göndərilsin - bunun üçün "Serial.println (y)" funksiyasından istifadə etməlisiniz. "Gecikmə (100)" xətti yalnız dəyişən 100 ms aralığında göndərilmək üçün koda əlavə edildi - əgər bu vaxta riayət edilməzsə, Serial həddindən artıq yüklənmə baş verəcək və proqramda mümkün qəzalar meydana gələcək.
gərginlik_ oxu.ino
üzmə sensoru = A0; |
voidsetup () { |
pinMode (sensor, GİRİŞ); |
Serial.begin (9600); |
} |
voidloop () { |
Serial.flush (); |
float x = analogOxu (sensor)*0.0048828125*16.67; |
String y = ""; |
y+= x; |
Serial.println (y); |
gecikmə (100); |
} |
GitHub tərəfindən ❤ ilə ev sahibliyi edilən rawvoltage_read.ino
Addım 7: Raspberry Pi 3 Proqramlaşdırma:
lamp_bike.py
import os #import os kitabxanası (lazım olduqda ekranı silmək üçün istifadə olunur) |
Raspnerry -nin GPIO -nu idarə etmək üçün istifadə olunan RPi. GPIOas gpio #import kitabxanasını import edin |
ardıcıl ünsiyyətdən məsul olan serial #idxal kitabxanasını idxal edin |
gecikmə funksiyasından istifadə etməyi mümkün edən #vaxt idxal kitabxanası |
mahnıları ifa etməkdən məsul idxal alt prosesi #idxal kitabxanası |
#seriala başlayın |
ser = serial. Serial ("/dev/ttyS0", 9600) #cihazın adını və ötürmə sürətini təyin edin |
#aydın ekran |
aydın = lambda: os.system ('aydın') |
#röleyi idarə etmək üçün pinlər qoyun |
gpio.setmode (gpio. BOARD) |
gpio.setup (11, gpio. OUT) #lampa 10 |
gpio.setup (12, gpio. OUT) #lampa 9 |
gpio.setup (13, gpio. OUT) #lampa 8 |
gpio.setup (15, gpio. OUT) #lampa 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 |
#qeydlərə başlayın |
ad = ["Heç biri"]*10 |
gərginlik = [0.00]*10 |
#qeydlər faylını oxuyun |
f = açıq ('qeydlər', 'r') |
for i inrange (10): #siyahıda ən yaxşı 10 bal görünür |
ad = f.readline () |
ad = ad [: len (ad )-1] |
gərginlik = f. oxu xətti () |
gərginlik = üzmə (gərginlik [: len (gərginlik )-1]) |
f.close () |
aydın () |
#maksimum gərginliyi təyin edin |
maksimum = 50.00 |
#lampaları söndürün |
i üçün (11, 24, 1): |
i! = 14 və i! = 17 və i! = 20 olarsa: |
gpio.output (i, gpio. HIGH) #YÜKSEK olaraq təyin olunduqda, rölelər söndürülür |
#başlamaq |
whileTrue: |
#ilkin ekran |
"Qeydlər: / n" yazdırın |
inrange üçün (10): |
çap adı , ":", gərginlik , "V" |
current_name = raw_input ("Başlamaq üçün adınızı yazın:") |
aydın () |
#Maksimum dəyəri dəyişdirin |
cari_ad == "maksimum" olarsa: |
max = giriş ("Maksimum gərginliyi yazın: (2 ədəd onluq)") |
aydın () |
başqa: |
#başlanğıc xəbərdarlığı |
i inrange üçün (11, 24, 1): #döngə PİN 11 -də başlayır və PIN 24 -də dayanır |
i! = 14 və i! = 17 və i! = 20: #PIN 14 və 20 GND sancaqlarıdır və 20 3.3 V pindir |
gpio.output (i, gpio. LOW) #lampaları yandırın |
vaxt.yuxu (0.5) |
k = 10 |
Mən sıralamaq üçün (23, 10, -1): |
aydın () |
i! = 14 və i! = 17 və i! = 20 olarsa: |
subprocess. Popen (['aplay', 'Audio/'+str (k)+'. wav']) |
vaxt.yuxu (0.03) |
aydın () |
çap et "Hazırla! / n", k |
vaxt.yuxu (1) |
k- = 1 |
gpio.output (i, gpio. HIGH) #lampaları söndür (tək -tək) |
subprocess. Popen (['aplay', 'Audio/go.wav']) #başlanğıc musiqisini səsləndirir |
vaxt.yuxu (0.03) |
aydın () |
"GO!" yazın |
vaxt.yuxu (1) |
aydın () |
#gərginlik oxu |
cərəyan gərginliyi = 0.00 |
gərginlik1 = 0.00 |
Mən inrange (200): |
ser.flushInput () |
əvvəlki = gərginlik1 |
gərginlik1 = float (ser.readline ()) #RX-TX tərəfindən ötürülən Arduinonun məlumatlarını toplayır |
aydın () |
çap gərginliyi1, "V" |
əgər gərginlik1> cərəyan gərginliyi: |
cərəyan gərginliyi = gərginlik1 |
# yaradılan gərginlikdən asılı olaraq daha çox lampa yanır. |
əgər gərginlik1 <max/10: |
i üçün (11, 24, 1): |
i! = 14 və i! = 17 və i! = 20 olarsa: |
gpio.output (i, gpio. HIGH) |
gərginlik1> = maksimum/10 olarsa: |
gpio.output (11, gpio. LOW) |
i üçün (12, 24, 1): |
i! = 14 və i! = 17 və i! = 20 olarsa: |
gpio.output (i, gpio. HIGH) |
əgər gərginlik1> = 2*maksimum/10: |
Mən sıralamaq üçün (11, 13, 1): |
gpio.output (i, gpio. LOW) |
i üçün (13, 24, 1): |
i! = 14 və i! = 17 və i! = 20 olarsa: |
gpio.output (i, gpio. HIGH) |
əgər gərginlik1> = 3*maksimum/10: |
I inrange üçün (11, 14, 1): |
gpio.output (i, gpio. LOW) |
Mən sıralamaq üçün (15, 24, 1): |
i! = 17 və i! = 20 olarsa: |
gpio.output (i, gpio. HIGH) |
əgər gərginlik1> = 4*max/10: |
i üçün (11, 16, 1): |
əgər mən! = 14: |
gpio.output (i, gpio. LOW) |
i üçün (16, 24, 1): |
i! = 17 və i! = 20 olarsa: |
gpio.output (i, gpio. HIGH) |
əgər gərginlik1> = 5*maksimum/10: |
Mən sıralamaq üçün (11, 17, 1): |
əgər mən! = 14: |
gpio.output (i, gpio. LOW) |
I inrange üçün (18, 24, 1): |
əgər mən! = 20: |
gpio.output (i, gpio. HIGH) |
əgər gərginlik1> = 6*maksimum/10: |
Mən inrange (11, 19, 1): |
i! = 14 və i! = 17 olarsa: |
gpio.output (i, gpio. LOW) |
i üçün (19, 24, 1): |
əgər mən! = 20: |
gpio.output (i, gpio. HIGH) |
əgər gərginlik1> = 7*maksimum/10: |
Mən inrange (11, 20, 1): |
i! = 14 və i! = 17 olarsa: |
gpio.output (i, gpio. LOW) |
i üçün (21, 24, 1): |
gpio.output (i, gpio. HIGH) |
əgər gərginlik1> = 8*maksimum/10: |
Mən inrange (11, 22, 1): |
i! = 14 və i! = 17 və i! = 20 olarsa: |
gpio.output (i, gpio. LOW) |
i üçün (22, 24, 1): |
gpio.output (i, gpio. HIGH) |
əgər gərginlik1> = 9*maksimum/10: |
Mən inrange (11, 23, 1): |
i! = 14 və i! = 17 və i! = 20 olarsa: |
gpio.output (i, gpio. LOW) |
gpio.output (23, gpio. HIGH) |
gərginlik1> = maksimum olarsa: |
i üçün (11, 24, 1): |
i! = 14 və i! = 17 və i! = 20 olarsa: |
gpio.output (i, gpio. LOW) |
gərginlik varsa 1 |
fasilə |
#lampaları söndürün |
i üçün (11, 24, 1): |
i! = 14 və i! = 17 və i! = 20 olarsa: |
gpio.output (i, gpio. HIGH) |
#qalib musiqi |
əgər cərəyan gərginliyi> = maksimum olarsa: |
subprocess. Popen (['aplay', 'Audio/rocky.wav']) |
vaxt.yuxu (0.03) |
aydın () |
çap et "ÇOX YAXŞI, QALDIN!"% (u '\u00c9', u '\u00ca', u '\u00c2') |
inrange üçün (10): |
j inrange üçün (11, 24, 1): |
j! = 14 və j! = 17 və j! = 20 olarsa: |
gpio.output (j, gpio. LOW) |
vaxt.yuxu (0.05) |
j inrange üçün (11, 24, 1): |
j! = 14 və j! = 17 və j! = 20 olarsa: |
gpio.output (j, gpio. HIGH) |
vaxt.yuxu (0.05) |
vaxt.yuxu (0.5) |
subprocess. Popen (['aplay', 'Audios/end.wav']) |
vaxt.yuxu (0.03) |
aydın () |
"Oyunu sona çatdırın… / n", cari_ gərginlik, "V" çap edin |
#qeydlər |
vaxt.yuxu (1.2) |
çatdı = 0 |
inrange üçün (10): |
əgər cərəyan gərginliyi> gərginlik olarsa: |
+= 1 -ə çatdı |
temp_voltage = gərginlik |
gərginlik = cərəyan gərginliyi |
cərəyan gərginliyi = temp_ gərginliyi |
temp_adı = ad |
ad = cari_ad |
cari_ad = temp_adı |
> 0 -a çatdıqda: |
subprocess. Popen (['aplay', 'Audio/record.wav']) |
vaxt.yuxu (0.03) |
aydın () |
f = açıq ('qeydlər', 'w') |
inrange üçün (10): |
f yazın (adı ) |
f. yaz ("\ n") |
f yazın (str (gərginlik )) |
f. yaz ("\ n") |
f.close () |
aydın () |
GitHub tərəfindən ❤ ilə evlənən rawlamps_bike.py -yə baxın
Addım 8: Elektrik Şeması:
![Elektrik sxemi Elektrik sxemi](https://i.howwhatproduce.com/images/002/image-5418-50-j.webp)
![Elektrik sxemi Elektrik sxemi](https://i.howwhatproduce.com/images/002/image-5418-51-j.webp)
![Elektrik sxemi Elektrik sxemi](https://i.howwhatproduce.com/images/002/image-5418-52-j.webp)
Arduino və Raspberry Pi 3, 3A cərəyanı olan 5V qaynaqla təchiz edilmişdir.
Elektrik dövrəsi, DC generatorunun (velosipedə qoşulmuş) 5.3V Zener diodundan, 10μF kondansatördən və 1kΩ rezistordan ibarət bir gərginlik filtri vasitəsilə Arduino -ya qoşulması ilə başlayır - filtr girişi şəbəkəyə qoşulur. generator terminalları və çıxış A0 portuna və nəzarətçinin GND -nə bağlıdır.
Arduino, RX-TX rabitəsi vasitəsi ilə Raspberry-yə qoşulur-10 kΩ rezistorlardan istifadə edərək rezistiv bölücü vasitəsi ilə yerinə yetirilir (fərqli gərginlikdə işləyən nəzarətçilərin portları üçün lazımdır).
Raspberry Pi -nin GPIO -ları lampaları yandırmaqdan məsul olan rölelərə bağlıdır. Bütün rölelərin "COM" -u bir -birinə bağlı idi və fazaya (AC şəbəkəsinə) və hər rölin "N. O" (normal olaraq açıq) hər bir lampaya və AC şəbəkəsinin neytral hissəsi bütün lampalara bağlı idi. Beləliklə, hər bir röledən məsul olan GPIO işə salındıqda, röle AC şəbəkəsinin fazasına keçir və müvafiq lampanı yandırır.
Addım 9: Nəticələr:
![Image Image](https://i.howwhatproduce.com/images/002/image-5418-54-j.webp)
![](https://i.ytimg.com/vi/84vHcSFsr9k/hqdefault.jpg)
Layihənin son montajından sonra, gözlənildiyi kimi işlədiyi təsdiqləndi - istifadəçinin velosipeddə pedal çəkmə sürətinə görə daha çox gərginlik yaranır və daha çox lampa yanır.
Tövsiyə:
USB Dəyişən Gərginlik Güc Təchizatı: 7 Adım (Şəkillərlə birlikdə)
![USB Dəyişən Gərginlik Güc Təchizatı: 7 Adım (Şəkillərlə birlikdə) USB Dəyişən Gərginlik Güc Təchizatı: 7 Adım (Şəkillərlə birlikdə)](https://i.howwhatproduce.com/images/001/image-150-11-j.webp)
USB Dəyişən Gərginlikli Güc Təchizatı: Bir müddətdir USB ilə işləyən dəyişən enerji təchizatı haqqında bir fikrim var. Dizayn edərkən, yalnız USB girişinə deyil, 3 VDC -dən 8 VDC -yə USB fişi və ya banan fişləri vasitəsilə icazə verən bir az daha çox yönlü etdim. Çıxışda t istifadə olunur
Yüksək Gərginlikli Batareyalar üçün Gərginlik Monitoru: 3 Adım (Şəkillərlə birlikdə)
![Yüksək Gərginlikli Batareyalar üçün Gərginlik Monitoru: 3 Adım (Şəkillərlə birlikdə) Yüksək Gərginlikli Batareyalar üçün Gərginlik Monitoru: 3 Adım (Şəkillərlə birlikdə)](https://i.howwhatproduce.com/images/005/image-12694-j.webp)
Yüksək Gərginlikli Batareyalar üçün Gərginlik Monitoru: Bu təlimatda sizə elektrik lövhəm üçün batareya gərginliyi monitorunu necə qurduğumu izah edəcəyəm. İstədiyiniz kimi quraşdırın və batareyanıza yalnız iki tel bağlayın (Gnd və Vcc). Bu təlimat, batareyanızın gərginliyinin 30 voltdan artıq olduğunu güman edirdi
Çox kanallı Wifi Gərginlik və Akım Ölçən: 11 Adım (Şəkillərlə birlikdə)
![Çox kanallı Wifi Gərginlik və Akım Ölçən: 11 Adım (Şəkillərlə birlikdə) Çox kanallı Wifi Gərginlik və Akım Ölçən: 11 Adım (Şəkillərlə birlikdə)](https://i.howwhatproduce.com/images/006/image-16134-j.webp)
Çox kanallı Wifi Gərginlik və Cərəyan Ölçən: Çörək taxtası taxarkən tez-tez dövrənin müxtəlif hissələrini eyni anda izləmək lazımdır. Multimetr problarını bir yerdən başqa yerə yapışdırmaqdan çəkinməmək üçün çox kanallı bir gərginlik və cərəyan sayğacını dizayn etmək istədim. Ina260 lövhəsi
LM317 gərginlik tənzimləyicisini istifadə edərək tənzimlənən gərginlik DC enerji təchizatı: 10 addım
![LM317 gərginlik tənzimləyicisini istifadə edərək tənzimlənən gərginlik DC enerji təchizatı: 10 addım LM317 gərginlik tənzimləyicisini istifadə edərək tənzimlənən gərginlik DC enerji təchizatı: 10 addım](https://i.howwhatproduce.com/images/010/image-28726-j.webp)
LM317 gərginlik tənzimləyicisini istifadə edərək tənzimlənən gərginlik DC enerji təchizatı: Bu layihədə, LM317 güc təchizatı dövrə diaqramı ilə LM317 IC istifadə edərək sadə tənzimlənən gərginlikli DC enerji təchizatı hazırladım. Bu dövrənin daxili bir körpü düzəldicisi olduğu üçün girişdə birbaşa 220V/110V AC təchizatı bağlaya bilərik
Velosipedlə işləyən telefon şarj cihazı: 6 addım (şəkillərlə birlikdə)
![Velosipedlə işləyən telefon şarj cihazı: 6 addım (şəkillərlə birlikdə) Velosipedlə işləyən telefon şarj cihazı: 6 addım (şəkillərlə birlikdə)](https://i.howwhatproduce.com/images/002/image-4552-28-j.webp)
Bike Powered Telefon Şarj Cihazı: Bu ucuz, 3D çap edilə bilən, hazırlanması və quraşdırılması asan olan ve telefon şarj cihazı universal olan bir Velosiped Güclü telefon şarj cihazıdır. Velosipedinizi çox sürürsünüzsə və telefonunuzu doldurmalısınızsa, bu faydalı bir şeydir. Şarj cihazı dizayn edilmiş və qurulmuşdur