PWM auf einen Pin am Arduino Nano umgebaut. Schaltplan und Software angepasst.

This commit is contained in:
Toberfra 2022-02-07 12:40:07 +01:00
parent 6449358671
commit 6a4fff7f01
5 changed files with 2229 additions and 2280 deletions

View File

@ -8,6 +8,11 @@ void Ablauf();
void AblaufSekunde(); void AblaufSekunde();
KlappenSteuerung klappe1 (M1A , M1B , M1SENSE , 5 ); KlappenSteuerung klappe1 (M1A , M1B , M1SENSE , 5 );
//KlappenSteuerung klappe2 (M2A , M2B , M2SENSE , 2 ); //KlappenSteuerung klappe2 (M2A , M2B , M2SENSE , 2 );
//KlappenSteuerung klappe3 (M3A , M3B , M3SENSE , 23 ); //KlappenSteuerung klappe3 (M3A , M3B , M3SENSE , 23 );
//KlappenSteuerung klappe4 (M4A , M4B , M4SENSE , 1 ); //KlappenSteuerung klappe4 (M4A , M4B , M4SENSE , 1 );
@ -16,6 +21,7 @@ KlappenSteuerung klappe1 (M1A , M1B , M1SENSE , 5 );
void setup() { void setup() {
// put your setup code here, to run once: // put your setup code here, to run once:
KlappenSteuerung::setMotorPwmPin(TIMER1_PWM_PIN);
KlappenSteuerung::setup(); KlappenSteuerung::setup();
pinMode(LED_BUILTIN , OUTPUT); pinMode(LED_BUILTIN , OUTPUT);
} }

View File

@ -3,7 +3,7 @@
uint8_t Motor::pinPwm;
@ -12,11 +12,16 @@ void Motor::setMotorPins(uint8_t pinA , uint8_t pinB){
this->pinB = pinB; this->pinB = pinB;
} }
void Motor::setMotorPwmPin(uint8_t pinPwm){
Motor::pinPwm = pinPwm;
}
void Motor::setup(){ void Motor::setup(){
ArduinoAnpassung::setup(); ArduinoAnpassung::setup();
Timer1.initialize(100); // 10kHz Timer1.initialize(1000); // 10kHz
Timer1.attachInterrupt(Motor::interruptEinsprung); //Timer1.attachInterrupt(Motor::interruptEinsprung);
Timer1.pwm(Motor::pinPwm, (0)); // 1023
//digitalWrite(LED_BUILTIN , 0 ); //digitalWrite(LED_BUILTIN , 0 );
} }
@ -44,64 +49,43 @@ void Motor::memberLoop(){
else else
test --; test --;
} }
setSollSpeed( test / 64); setSollSpeed( test / 128);
//setSollSpeed(100); //setSollSpeed(100);
} }
void Motor::setSollSpeed(int16_t speed){ void Motor::setSollSpeed(int16_t speed){
if(speed > 256) uint16_t pwm;
speed = 256;
if((speed < 100) && (speed > -100))
speed = 0;
if(speed < -256)
speed = -256;
sollSpeed = speed; if(speed >255)
speed = 255;
} if(speed < -255)
speed = -255;
void Motor::interruptEinsprung(){ if(speed > 0)
MyList *zeiger; {
zeiger = ArduinoAnpassung::getErstesElement(); pwm = 512 + speed * 2;
while(zeiger){
((Motor*)zeiger)->memberInterruptEinsprung();
zeiger = zeiger->getNachfolgerElement();
}
}
void Motor::memberInterruptEinsprung(){
interruptBerechnungen();
timer ++;
//digitalWrite(LED_DEBUG , (timer & 0x100) != 0 );
//digitalWrite(LED_BUILTIN , 1 );
}
void Motor::interruptBerechnungen(){
summeSpeed += sollSpeed;
if(summeSpeed >= 256)
{
summeSpeed -= 256;
digitalWrite(pinA , 0); digitalWrite(pinA , 0);
digitalWrite(pinB , 1); digitalWrite(pinB , 1);
digitalWrite(LED_BUILTIN , 0 );
}else if (summeSpeed <= -256){ }else if (speed < 0){
summeSpeed += 256; pwm = 512 - speed * 2;
digitalWrite(pinA , 1); digitalWrite(pinA , 1);
digitalWrite(pinB , 0); digitalWrite(pinB , 0);
digitalWrite(LED_BUILTIN , 1 );
}else{ }else{
pwm = 1023;
digitalWrite(pinA , 0); digitalWrite(pinA , 0);
digitalWrite(pinB , 0); digitalWrite(pinB , 0);
digitalWrite(LED_BUILTIN , 0 );
} }
Timer1.pwm(Motor::pinPwm, pwm);
} }

View File

@ -15,21 +15,21 @@ public:
static void setup(); static void setup();
void setMotorPins(uint8_t pinA , uint8_t pinB); void setMotorPins(uint8_t pinA , uint8_t pinB);
static void setMotorPwmPin(uint8_t pinPwm);
void setSollSpeed(int16_t speed); void setSollSpeed(int16_t speed);
protected: protected:
static Motor *letztesElement;
Motor *vorherElement; static uint8_t pinPwm;
void memberSetup(); void memberSetup();
void memberLoop(); void memberLoop();
static void interruptEinsprung(); //static void interruptEinsprung();
void memberInterruptEinsprung(); //void memberInterruptEinsprung();
//void InterruptEinsprung(); //void InterruptEinsprung();
void interruptBerechnungen(); void interruptBerechnungen();

View File

@ -2,6 +2,7 @@
#define PINS_H #define PINS_H
#define TIMER1_PWM_PIN 9
#define M1A 2 #define M1A 2
#define M1B 3 #define M1B 3
@ -16,15 +17,15 @@
#define M3SENSE A3 #define M3SENSE A3
#define M4A 8 #define M4A 8
#define M4B 9 #define M4B 10
#define M4SENSE A4 #define M4SENSE A4
#define M5A 10 #define M5A 11
#define M5B 11 #define M5B 12
#define M5SENSE A5 #define M5SENSE A5
#define M6A 12 #define M6A 13
#define M6B 13 #define M6B 14
#define M6SENSE A6 #define M6SENSE A6

File diff suppressed because it is too large Load Diff