Агуулгын хүснэгт:

Эргометрийн дугуйгаар хүчдэл үүсгэх: 9 алхам (зурагтай)
Эргометрийн дугуйгаар хүчдэл үүсгэх: 9 алхам (зурагтай)

Видео: Эргометрийн дугуйгаар хүчдэл үүсгэх: 9 алхам (зурагтай)

Видео: Эргометрийн дугуйгаар хүчдэл үүсгэх: 9 алхам (зурагтай)
Видео: Ergot Alkaloids: Nursing Pharmacology- an Osmosis Preview 2024, Арваннэгдүгээр
Anonim
Эргометрийн дугуйгаар хүчдэл үүсгэх
Эргометрийн дугуйгаар хүчдэл үүсгэх
Эргометрийн дугуйгаар хүчдэл үүсгэх
Эргометрийн дугуйгаар хүчдэл үүсгэх
Эргометрийн дугуйгаар хүчдэл үүсгэх
Эргометрийн дугуйгаар хүчдэл үүсгэх

Төслийн боловсруулалт нь дугуйн дөрөөгөөр явагддаг хөдөлгүүрийн хурд нэмэгдэхийн хэрээр идэвхждэг чийдэнгийн цамхаг, генераторт холбогдсон эргометр дугуйгаар дөрөө хийх зорилготой "тоглоом" угсрахаас бүрдсэн байв. Энэхүү систем нь Arduino Mega-ийн аналог портоор дамжуулж шууд хүчдэл үүсгэж, дараа нь энэхүү өгөгдлийг RX-TX цуваа холболтоор Raspberry Pi 3 руу дамжуулж, дараа нь релейгээр чийдэнг идэвхжүүлэхэд үндэслэсэн болно.

Алхам 1: Материал:

  • 1 Raspberry Pi 3;
  • 1 Arduino Mega 2560;
  • 10 реле бүхий 1 буухиа бамбай 12 В;
  • 10 улайсдаг чийдэн 127 В;
  • 1 эргометр дугуй;
  • 1 Цахилгаан машин (Генератор) 12 В;
  • Эсэргүүцэл (1x1kΩ, 2x10kΩ);
  • 1 электролитийн конденсатор 10 μF;
  • 1 Zener диод 5.3 В;
  • 1.5 мм кабель (улаан, хар, хүрэн);
  • 10 чийдэнгийн дэмжлэгтэй БСХС -ийн 1 цамхаг.

Алхам 2: Системийн блокуудын диаграм:

Системийн блокуудын диаграм
Системийн блокуудын диаграм

Алхам 3: Системийн ажиллагаа:

Энэхүү систем нь дугуй унах үед бий болсон кинетик энергийг цахилгаан эрчим хүч болгон хувиргахад суурилдаг бөгөөд энэ нь лампыг асаах реле идэвхжүүлэх үүрэгтэй юм.

Генераторын үүсгэсэн хүчдэлийг Arduino-ийн аналог зүүгээр уншиж RX-TX-ээр Raspberry Pi руу илгээдэг. Релейг идэвхжүүлэх нь үүсгэсэн хүчдэлтэй пропорциональ байна - хүчдэл өндөр байх тусам илүү их реле асах бөгөөд илүү их чийдэн асах болно.

Алхам 4: Механикийн талууд

Механикийн талууд
Механикийн талууд

Тогтмол гүйдлийн генераторыг унадаг дугуйтай хослуулахын тулд туузны системийг ердийн унадаг дугуй (титэм, гинж, бүлүүрээс бүрдсэн) системээр солих шаардлагатай байв. Хөдөлгүүрийг боолтоор бэхлэхийн тулд дугуйн хүрээнд металл хавтанг гагнажээ. Үүний дараа бүлүүрийг генераторын босоо ам руу гагнаж, гинжийг байрлуулж, дөрөө системийг генератортой холбосон.

Алхам 5: Хүчдэлийн уншилт:

Генераторын хүчдэлийг Arduino ашиглан уншихын тулд цахилгаан машины эерэг туйлыг хянагчийн A0 зүү, сөрөг туйлыг GND -тэй холбох шаардлагатай байдаг. Arduino тээглүүр, 10 μF конденсатор, 1 кОм эсэргүүцэл, 5.3 В -ийн Zener диод ашигладаг хүчдэлийн шүүлтүүрийг хянагч ба генераторын хооронд холбосон. Arduino -д ачаалагдсан програм хангамж нь маш энгийн бөгөөд зөвхөн аналог портыг уншихаас гадна уншсан утгыг 0.0048828125 (5/1024, өөрөөр хэлбэл Arduino -ийн GPIO хүчдэлийг аналог портын битийн тоонд хувааж) үржүүлж, Цуваа руу хувьсах - кодыг нийтлэлд ашиглах боломжтой болно.

Raspberry Pi дээр RX-TX холболтыг идэвхжүүлэх журам нь арай илүү төвөгтэй бөгөөд та линк дээр тайлбарласан процедурыг дагаж мөрдөх ёстой. Товчхондоо, "/etc/inittab" хэсэгт байрлах "inittab" нэртэй файлыг засах хэрэгтэй бөгөөд "T0: 23: respawn:/sbin/getty -L ttyAMA0 115200 vt100" гэсэн мөрийг тайлбарлана уу (хэрэв файл нь тийм биш бол). Raspberry -ийн OS дээр байгуулагдсан тул та "sudo leafpad /boot/config.txt" гэсэн командыг оруулаад файлын төгсгөлд "enable_uart = 1" гэсэн мөрийг хавсаргана уу). Үүнийг хийсний дараа та LX терминалыг дахин нээж, "sudo systemctl stop [email protected]" ба "sudo systemctl [email protected]ийг идэвхгүй болгох" командыг ашиглан цувралыг идэвхгүй болгох ёстой. Үүний дараа та "sudo leafpad /boot/cmdline.txt" тушаалыг гүйцэтгэж, "console = serial0, 115200" гэсэн мөрийг устгаад файлыг хадгалаад төхөөрөмжийг дахин эхлүүлэх хэрэгтэй. RX-TX холболт хийх боломжтой байхын тулд Raspberry Pi дээр "sudo apt-get install -f python-serial" командыг ашиглан Цуваа номын санг суулгаж, "цуваа импортлох" мөрийг оруулах замаар номын санг код руу импортлох ёстой., "ser = serial. Serial (" / dev / ttyS0 ", 9600)" гэсэн мөрийг оруулаад цувралыг эхлүүлж, "ser.readline ()" тушаалыг ашиглан Arduino -аас илгээсэн хүчдэлийн уншилтыг ашиглана. Raspberry -г нийтлэлийн төгсгөлд ашиглах боломжтой болно.

Дээр тайлбарласан процедурын дагуу унших, дамжуулах хүчдэлийн алхам дууссан.

Алхам 6: Arduino програмчлал:

Өмнө дурьдсанчлан дугуй унах үед үүссэн хүчдэлийг унших үүрэгтэй код нь маш энгийн.

Нэгдүгээрт, хүчдэлийг унших үүрэгтэй A0 зүүг сонгох шаардлагатай.

"Void setup ()" функц дээр та "pinMode (мэдрэгч, INPUT)" командыг ашиглан A0 зүүг INPUT болгож, "Serial.begin (9600)" командыг ашиглан цуваа порт дамжуулах хурдыг сонгох хэрэгтэй.

"Void loop ()" хэсэгт "Serial.flush ()" функц нь цуваагаар мэдээлэл илгээхээ зогсоох бүрдээ буферийг цэвэрлэхэд ашиглагддаг; Хүчдэлийн уншилтыг "analogRead (мэдрэгч)" функцээр гүйцэтгэдэг - аналог портын уншсан утгыг вольт болгон хөрвүүлэх шаардлагатай гэдгийг санаж, өгүүллийн "унших хүчдэл" хэсэгт дурдсан болно.

Түүнчлэн, "void loop ()" функцэд R хувьсагчийг RX-TX-ээр илгээх цорын ганц арга зам учраас х хувьсагчийг float-аас string рүү хөрвүүлэх шаардлагатай байдаг. Давталтын функцын хамгийн сүүлийн алхам бол цуваа порт дахь мөрийг хэвлэх бөгөөд ингэснээр Raspberry руу илгээгдэх болно - үүний тулд та "Serial.println (y)" функцийг ашиглах ёстой. "Саатал (100)" гэсэн мөрийг зөвхөн кодыг нэмж оруулсан бөгөөд ингэснээр хувьсагчийг 100 мс -ийн интервалтайгаар илгээнэ. Хэрэв энэ хугацааг үл тоомсорловол Цувралын хэт ачаалал үүсч, програмд алдаа гарч болзошгүй юм.

хүчдэл_ унших.ino

хөвөх мэдрэгч = A0;
voidsetup () {
pinMode (мэдрэгч, оролт);
Цуваа эхлэх (9600);
}
voidloop () {
Serial.flush ();
float x = analogRead (sensor)*0.0048828125*16.67;
String y = "";
y+= x;
Serial.println (y);
саатал (100);
}

GitHub -аас ❤ зохион байгуулсан rawvoltage_read.ino -г үзэх

Алхам 7: Raspberry Pi 3 програмчлал:

lamp_bike.py

import os #import os os library (шаардлагатай үед дэлгэцийг цэвэрлэхэд ашигладаг)
Raspiry -ийн GPIO -г хянахад ашигладаг RPi. GPIOas gpio #import номын санг импортлох
цуваа холболтыг хариуцдаг импортын цуваа #импортын номын сан
хойшлуулах функцийг ашиглах боломжтой болгодог импортын цаг #импортын номын сан
импортлох дэд процесс #импортын номын сан нь дуунуудыг тоглуулах үүрэгтэй
#цувралыг эхлүүлэх
ser = serial. Serial ("/dev/ttyS0", 9600) #төхөөрөмжийн нэр болон дамжуулах хурдыг тодорхойлох
#цэвэр дэлгэц
clear = lambda: os.system ('тодорхой')
#реле хянах зориулалттай тээглүүр
gpio.setmode (gpio. BOARD)
gpio.setup (11, gpio. OUT) #чийдэн 10
gpio.setup (12, gpio. OUT) #чийдэн 9
gpio.setup (13, gpio. OUT) #чийдэн 8
gpio.setup (15, gpio. OUT) #чийдэн 7
gpio.setup (16, gpio. OUT) #чийдэн 6
gpio.setup (18, gpio. OUT) #чийдэн 5
gpio.setup (19, gpio. OUT) #чийдэн 4
gpio.setup (21, gpio. OUT) #чийдэн 3
gpio.setup (22, gpio. OUT) #чийдэн 2
gpio.setup (23, gpio. OUT) #чийдэн 1
#бичлэгийг эхлүүлэх
нэр = ["Байхгүй"]*10
хүчдэл = [0.00]*10
#бүртгэлийн файлыг уншина уу
f = нээлттэй ('бичлэг', 'r')
for i inrange (10): #шилдэг 10 оноо жагсаалтад гарч ирэв
нэр = f.readline ()
нэр = нэр [: len (нэр )-1]
хүчдэл = f.readline ()
хүчдэл = хөвөх (хүчдэл [: len (хүчдэл )-1])
f.clos ()
тодорхой ()
#хамгийн их хүчдэлийг тохируулна
хамгийн их = 50.00
#чийдэнгээ унтраа
for i inrange (11, 24, 1):
хэрэв би! = 14 ба би! = 17 ба би! = 20:
gpio.output (i, gpio. HIGH) #HIGH болгож, реле унтарсан
#эхлүүлэх
whileTrue:
#анхны дэлгэц
"Бичлэгүүд: / n" хэвлэх
Миний хувьд (10):
хэвлэх нэр , ":", хүчдэл , "V"
current_name = raw_input ("Эхлэхийн тулд нэрээ бичнэ үү:")
тодорхой ()
#Хамгийн их утгыг өөрчлөх
хэрэв current_name == "max" бол:
max = оролт ("Хамгийн их хүчдэлийг бичнэ үү: (2 аравтын орон)")
тодорхой ()
өөр:
#эхлэх анхааруулга
for i inrange (11, 24, 1): #давталт нь ПИН 11 -ээс эхэлж, ПИН 24 -т зогсоно
хэрэв i! = 14 ба i! = 17 ба i! = 20: #PIN 14 ба 20 нь GND зүү, 20 нь 3.3 В зүү юм
gpio.output (i, gpio. LOW) #чийдэнг асаах
цаг унтах (0.5)
k = 10
i inrange (23, 10, -1):
тодорхой ()
хэрэв би! = 14 ба би! = 17 ба би! = 20:
дэд процесс. Нээлттэй (['aplay', 'Audios/'+str (k)+'. wav'])
цаг унтах (0.03)
тодорхой ()
"Бэлтгээрэй! / n" хэвлэх, k
цаг унтах (1)
k- = 1
gpio.output (i, gpio. HIGH) #чийдэнг унтраана (нэг нэгээр нь)
subprocess. Popen (['aplay', 'Audios/go.wav']) #эхлэх хөгжмийг тоглуулдаг
цаг унтах (0.03)
тодорхой ()
"Яв!" гэж хэвлэх
цаг унтах (1)
тодорхой ()
#хүчдэл унших
одоогийн_хүчдэл = 0.00
хүчдэл1 = 0.00
Миний хувьд (200):
ser.flushInput ()
өмнөх = хүчдэл1
хүчдэл1 = хөвөх (ser.readline ()) #RX-TX-ээр дамжуулсан Arduino-ийн өгөгдлийг цуглуулдаг
тодорхой ()
хэвлэх хүчдэл1, "V"
хэрэв хүчдэл1> одоогийн_хүчдэл:
одоогийн_хүчдэл = хүчдэл1
# үүсгэсэн хүчдэлээс хамааран илүү олон чийдэн асдаг.
хэрэв хүчдэл1 <хамгийн их/10:
for inrange (11, 24, 1):
хэрэв би! = 14 ба би! = 17 ба би! = 20:
gpio.output (i, gpio. HIGH)
хэрэв хүчдэл1> = хамгийн их/10:
gpio.output (11, gpio. LOW)
i inrange (12, 24, 1):
хэрэв би! = 14 ба би! = 17 ба би! = 20:
gpio.output (i, gpio. HIGH)
хэрэв хүчдэл1> = 2*хамгийн их/10:
for i inrange (11, 13, 1):
gpio.output (i, gpio. LOW)
for i inrange (13, 24, 1):
хэрэв би! = 14 ба би! = 17 ба би! = 20:
gpio.output (i, gpio. HIGH)
хэрэв хүчдэл1> = 3*хамгийн их/10:
for inrange (11, 14, 1):
gpio.output (i, gpio. LOW)
for inrange (15, 24, 1):
хэрэв би! = 17 ба би! = 20:
gpio.output (i, gpio. HIGH)
хэрэв хүчдэл1> = 4*хамгийн их/10:
for i inrange (11, 16, 1):
хэрэв би! = 14:
gpio.output (i, gpio. LOW)
i inrange (16, 24, 1):
хэрэв би! = 17 ба би! = 20:
gpio.output (i, gpio. HIGH)
хэрэв хүчдэл1> = 5*хамгийн их/10:
for i inrange (11, 17, 1):
хэрэв би! = 14:
gpio.output (i, gpio. LOW)
for inrange (18, 24, 1):
хэрэв би! = 20:
gpio.output (i, gpio. HIGH)
хэрэв хүчдэл1> = 6*хамгийн их/10:
for i inrange (11, 19, 1):
хэрэв би! = 14 ба би! = 17:
gpio.output (i, gpio. LOW)
for i inrange (19, 24, 1):
хэрэв би! = 20:
gpio.output (i, gpio. HIGH)
хэрэв хүчдэл1> = 7*хамгийн их/10:
for i inrange (11, 20, 1):
хэрэв би! = 14 ба би! = 17:
gpio.output (i, gpio. LOW)
for i inrange (21, 24, 1):
gpio.output (i, gpio. HIGH)
хэрэв хүчдэл1> = 8*хамгийн их/10:
for i inrange (11, 22, 1):
хэрэв би! = 14 ба би! = 17 ба би! = 20:
gpio.output (i, gpio. LOW)
for inrange (22, 24, 1):
gpio.output (i, gpio. HIGH)
хэрэв хүчдэл1> = 9*хамгийн их/10:
for i inrange (11, 23, 1):
хэрэв би! = 14 ба би! = 17 ба би! = 20:
gpio.output (i, gpio. LOW)
gpio.output (23, gpio. HIGH)
хэрэв хүчдэл1> = хамгийн их:
for i inrange (11, 24, 1):
хэрэв би! = 14 ба би! = 17 ба би! = 20:
gpio.output (i, gpio. LOW)

хэрэв хүчдэл1

завсарлага
#чийдэнгээ унтраа
for inrange (11, 24, 1):
хэрэв би! = 14 ба би! = 17 ба би! = 20:
gpio.output (i, gpio. HIGH)
#ялалтын хөгжим
хэрэв current_voltage> = max:
дэд процесс. Нээлттэй (['aplay', 'Audios/rocky.wav'])
цаг унтах (0.03)
тодорхой ()
"МАШ САЙН, ТА ЯЛАА!"% (u '\u00c9', u '\u00ca', u '\u00c2') хэвлэх
Миний хувьд (10):
j inrange -ийн хувьд (11, 24, 1):
Хэрэв j! = 14 ба j! = 17 ба j! = 20 бол:
gpio.output (j, gpio. LOW)
цаг унтах (0.05)
j inrange -ийн хувьд (11, 24, 1):
Хэрэв j! = 14 ба j! = 17 ба j! = 20 бол:
gpio.output (j, gpio. HIGH)
цаг унтах (0.05)
цаг унтах (0.5)
дэд процесс. Нээлттэй (['aplay', 'Audios/end.wav'])
цаг унтах (0.03)
тодорхой ()
"Тоглоомыг дуусгах… / n", одоогийн_хүчдэл, "V" гэж хэвлэх
#бичлэгүүд
цаг унтах (1.2)
= 0 хүрсэн
Миний хувьд (10):
хэрэв одоогийн_хүчдэл> хүчдэл :
+= 1 хүрсэн
temp_voltage = хүчдэл
хүчдэл = одоогийн хүчдэл
одоогийн_хүчдэл = температурын_хүчдэл
temp_name = нэр
нэр = одоогийн_ нэр
current_name = temp_name
хэрэв> 0 хүрсэн бол:
дэд процесс. Нээлттэй (['aplay', 'Audios/record.wav'])
цаг унтах (0.03)
тодорхой ()
f = нээлттэй ('бичлэг', 'w')
Миний хувьд (10):
f. бичих (нэр )
f. бичих ("\ n")
f. бичих (str (хүчдэл ))
f. бичих ("\ n")
f. ойрхон ()
тодорхой ()

GitHub -аас ❤ -аар зохион байгуулагдсан rawlamps_bike.py -г үзэх

Алхам 8: Цахилгаан схем:

Цахилгаан схем
Цахилгаан схем
Цахилгаан схем
Цахилгаан схем
Цахилгаан схем
Цахилгаан схем

Arduino болон Raspberry Pi 3 нь 3А гүйдэлтэй 5V эх үүсвэрээр тэжээгддэг.

Цахилгаан хэлхээ нь DC генераторыг (унадаг дугуйнд холбосон) 5.3V Zener диод, 10μF конденсатор ба 1 кОм резистороос бүрдсэн хүчдэлийн шүүлтүүрээр дамжуулан Arduino руу холбохоос эхэлдэг. генераторын терминал ба гаралт нь хянагчийн A0 порт ба GND -тэй холбогддог.

Arduino нь RX-TX холболтоор Raspberry-тэй холбогддог-эсэргүүцэл хуваагчаар 10 кОм эсэргүүцэл ашиглан гүйцэтгэдэг (өөр өөр хүчдэлд ажилладаг хянагчдын портууд шаардлагатай).

Raspberry Pi -ийн GPIO нь чийдэн асаах үүрэгтэй релетэй холбогддог. Бүх релений "COM" нь хоорондоо холбогдсон бөгөөд фазад (AC сүлжээ) холбогдсон бөгөөд реле бүрийн "N. O" (ихэвчлэн нээлттэй) гэрэл тус бүрт холбогдсон бөгөөд хувьсах гүйдлийн сүлжээний саармаг нь бүх чийдэнтэй холбогдсон байв. Тиймээс реле тус бүрийг хариуцах GPIO идэвхжсэн үед реле нь AC сүлжээний фаз руу шилжиж, холбогдох дэнлүүгээ асаана.

Алхам 9: Үр дүн:

Image
Image

Төслийн эцсийн угсралтын дараа хүлээгдэж байсны дагуу ажилласан нь батлагдсан - хэрэглэгчийн дугуйгаар гишгэсэн хурдны дагуу илүү их хүчдэл үүсч, илүү олон чийдэн асдаг.

Зөвлөмж болгож буй: