O‘ZBEKISTON RESPUBLIKASI
RAQAMLI TEXNOLOGIYALARI VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
“O‘rnatilgan tizimlar”
fanidan
LABORATORIYA
TOPSHIRIQ №3
Bajardi: ____811 20____-guruh talabasi
_ _ Rustamov Sherzod _______________________
Qabul qildi: Jurayev D.B.
Toshkent 2023
15
|
Step matorni potensiometr orqali oldinga va orqaga boshqarish.(tezligi va aylanish sonini)
|
Rustamov Sherzodbek Otabek o‘g‘li
|
Step motorlar:
Keling, ushbu 28-BYJ48 step motorini ko'rib chiqaylik .
Xo'sh, oddiy to'g'ridan-to'g'ri to'g'ridan-to'g'ri dvigateldan farqli o'laroq, bu dvigateldan har xil rangdagi beshta sim bor va nega shunday? Buni tushunish uchun biz birinchi navbatda stepper qanday ishlashini va uning xususiyati nima ekanligini bilishimiz kerak. Avvalo step motorlar aylanmaydi , ular qadam va shuning uchun ular ham qadam motorlari sifatida tanilgan . Ya'ni, ular bir vaqtning o'zida faqat bir qadam harakat qiladilar. Ushbu motorlarda bobinlar ketma-ketligi mavjud va dvigatelning aylanishi uchun bu bobinlar ma'lum bir tarzda quvvatlanishi kerak. Har bir lasan quvvatlanayotganda, vosita bir qadam tashlaydi va kuchlanish ketma-ketligi dvigatelni doimiy qadamlar qo'yishga majbur qiladi, shuning uchun uni aylantiradi. Keling, bu simlar qayerdan kelganini aniq bilish uchun dvigatel ichidagi bobinlarni ko'rib chiqaylik.
Potansiyometr sozlanishi kuchlanish bo'luvchisini tashkil etuvchi toymasin yoki aylanadigan kontaktli uch terminalli rezistordir . Agar faqat ikkita terminal, bir uchi va artgich ishlatilsa, u o'zgaruvchan qarshilik yoki reostat vazifasini bajaradi .
Potansiyometr deb ataladigan o'lchov vositasi, asosan, elektr potentsialini (kuchlanishni) o'lchash uchun ishlatiladigan kuchlanish bo'luvchidir ; komponent bir xil printsipning amalga oshirilishi, shuning uchun uning nomi.
Potansiyometrlar odatda elektr qurilmalarini boshqarish uchun ishlatiladi, masalan, audio uskunalardagi ovoz balandligini boshqarish. Mexanizm bilan ishlaydigan potentsiometrlar, masalan, joystikda joylashishni o'zgartiruvchi sifatida ishlatilishi mumkin . Potansiyometrlar kamdan-kam hollarda sezilarli quvvatni (bir vattdan ko'proq ) to'g'ridan-to'g'ri nazorat qilish uchun ishlatiladi, chunki potansiyometrda yo'qolgan quvvat boshqariladigan yukdagi quvvat bilan taqqoslanishi mumkin.
Arduino - bu elektronika, avtomatlashtirish, jarayonlarni avtomatlashtirish va robototexnika sohasida oddiy tizimlar, modellar va tajribalarni yaratish va prototiplash uchun apparat va dasturiy vositalar brendidir.
Dasturiy ta'minot qismi dasturlarni yozish, ularni kompilyatsiya qilish va dasturiy ta'minot uchun bepul dasturiy ta'minot qobig'idan (IDE) iborat. Uskuna qismi rasmiy ishlab chiqaruvchi va uchinchi tomon ishlab chiqaruvchilari tomonidan sotiladigan yig'ilgan bosilgan elektron platalar to'plamidir. Tizimning toʻliq ochiq arxitekturasi sizga erkin nusxa koʻchirish yoki Arduino mahsulot qatoriga qoʻshish imkonini beradi.
My project: https://wokwi.com/projects/364998600193969153
#include
#include
const byte dcPwmPin = 3;
const byte dcDirPin = 4;
const byte ledUpPin = 5;
const byte ledDownPin = 6;
const byte dirPinSpeedometer = 7;
const byte stepPinSpeedometer = 8;
const byte servoPin = 9;
const byte dirPin = 11;
const byte stepPin = 12;
const byte potPin = A0;
//const bool useDeadband = true;
const int deadband = 200;
const int step_per_rev = 200;
AccelStepper speedometer(AccelStepper::DRIVER, stepPinSpeedometer, dirPinSpeedometer);
AccelStepper stepper(AccelStepper::DRIVER, stepPin, dirPin);
Servo myservo;
int potState = 510;
float motorSpeed = 0;
float motorRPM = 0;
float maxRPM = 50;
void setup() {
pinMode(dcPwmPin, OUTPUT);
pinMode(dcDirPin, OUTPUT);
pinMode(ledUpPin, OUTPUT);
pinMode(ledDownPin, OUTPUT);
Serial.begin(115200);
stepper.setMaxSpeed(2000);
stepper.setSpeed(0);
speedometer.setMaxSpeed(2000);
speedometer.setAcceleration(20000);
myservo.attach(servoPin);
}
void loop() {
int pot_val = analogRead(A0);
if (pot_val != potState ) {
potState = pot_val;
analogWrite(ledUpPin,potState/4);
analogWrite(ledDownPin, (int)(255 -potState/4));
myservo.write(potState * 180UL / 1023);
if (deadband) {
if (potState < (1023-deadband)/2) {
digitalWrite(dcDirPin,LOW);
motorRPM = (potState - (1023L-deadband)/2) * maxRPM / ((1023-deadband)/2);
} else if (potState > (1023+deadband)/2) {
digitalWrite(dcDirPin,HIGH);
motorRPM = (potState - (1023L+deadband)/2) * maxRPM / ((1023-deadband)/2);
} else motorRPM = 0;
} else {
motorRPM = map(potState, 0, 1023, -maxRPM, maxRPM);
}
motorSpeed = motorRPM * step_per_rev / 60;
speedometer.moveTo(motorRPM);
stepper.setSpeed(motorSpeed);
analogWrite(dcPwmPin, floor(abs(potState-511.5)/2) );
Serial.print(potState);
Serial.print("->");
Serial.print(motorRPM);
Serial.print(" ");
}
stepper.runSpeed();
speedometer.run();
}
Dostları ilə paylaş: |