۱۶-دى-۱۳۹۸, ۱۵:۳۸:۵۹
سلام دوستان وقت همگی بخیر
من یه انکودر دارم که با ولتاژ 5 تا 12 کار میکنه.
وقتی ولتاژم تغییر مکنه به کل تعداد پالسهام توی چرخش تغییر میکنه
مثلا توی 5 ولت هر چرخش کاملی 200 تا پالس میزنه
توی 12 ولت 100 تا پالس توی یه چرخش کامل میزنه
اینم سورس کدش
یه مشکل دیگه هم داره.
وقتی یکدور انکودر رو میچرخونم 100 تا پالس میزنه.
وقتی بر میگردونم 95 یا 80 تا پالس میندازه.
یا مثلا وقتی یواش میچرخونم یجاهایی اصلا پالس نمیندازه.
متاسفانه من دانش کافی الکترونیک رو ندارم.
از آردوینو استفاده میکنم.
ممنون میشم راهنمایی کنید.
من یه انکودر دارم که با ولتاژ 5 تا 12 کار میکنه.
وقتی ولتاژم تغییر مکنه به کل تعداد پالسهام توی چرخش تغییر میکنه
مثلا توی 5 ولت هر چرخش کاملی 200 تا پالس میزنه
توی 12 ولت 100 تا پالس توی یه چرخش کامل میزنه
اینم سورس کدش
کد:
#include "METER_DEFS.h"
#include <Arduino.h>
static long counter = 0;
static DisplayDevice* lcd;
static int IPin1, IPin2;
static float METERED = 0.0;
MeterDevice::MeterDevice(DisplayDevice* dsp){
lcd = dsp;
}
void MeterDevice::SETUP(int intr1, int intr2){
IPin1 = intr1;
IPin2 = intr2;
pinMode(intr1, INPUT); // set pin to input
pinMode(intr2, INPUT); // set pin to input
digitalWrite(intr1, HIGH); // turn on pullup resistors
digitalWrite(intr2, HIGH); // turn on pullup resistors
//Setting up interrupt
//A rising pulse from encodenren activated ai0(). AttachInterrupt 0 is DigitalPin nr 2 on moust Arduino.
attachInterrupt(2, decreased, RISING);
//B rising pulse from encodenren activated ai1(). AttachInterrupt 1 is DigitalPin nr 3 on moust Arduino.
attachInterrupt(3, increased, RISING);
}
float MeterDevice::READ(){
if(counter <= 0){
counter = 0;
return (0);
}
float metered = (float)counter / (float)200;
return (metered);
}
void MeterDevice::RESET(){
counter=0;
}
static void MeterDevice::decreased(){
if(digitalRead(IPin1)==LOW) {
counter++;
}else{
counter--;
}
}
static void MeterDevice::increased(){
if(digitalRead(IPin2)==LOW) {
counter--;
}else{
counter++;
}
}
یه مشکل دیگه هم داره.
وقتی یکدور انکودر رو میچرخونم 100 تا پالس میزنه.
وقتی بر میگردونم 95 یا 80 تا پالس میندازه.
یا مثلا وقتی یواش میچرخونم یجاهایی اصلا پالس نمیندازه.
متاسفانه من دانش کافی الکترونیک رو ندارم.
از آردوینو استفاده میکنم.
ممنون میشم راهنمایی کنید.