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();
KlappenSteuerung klappe1 (M1A , M1B , M1SENSE , 5 );
//KlappenSteuerung klappe2 (M2A , M2B , M2SENSE , 2 );
//KlappenSteuerung klappe3 (M3A , M3B , M3SENSE , 23 );
//KlappenSteuerung klappe4 (M4A , M4B , M4SENSE , 1 );
@ -16,6 +21,7 @@ KlappenSteuerung klappe1 (M1A , M1B , M1SENSE , 5 );
void setup() {
// put your setup code here, to run once:
KlappenSteuerung::setMotorPwmPin(TIMER1_PWM_PIN);
KlappenSteuerung::setup();
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;
}
void Motor::setMotorPwmPin(uint8_t pinPwm){
Motor::pinPwm = pinPwm;
}
void Motor::setup(){
ArduinoAnpassung::setup();
Timer1.initialize(100); // 10kHz
Timer1.attachInterrupt(Motor::interruptEinsprung);
Timer1.initialize(1000); // 10kHz
//Timer1.attachInterrupt(Motor::interruptEinsprung);
Timer1.pwm(Motor::pinPwm, (0)); // 1023
//digitalWrite(LED_BUILTIN , 0 );
}
@ -44,64 +49,43 @@ void Motor::memberLoop(){
else
test --;
}
setSollSpeed( test / 64);
setSollSpeed( test / 128);
//setSollSpeed(100);
}
void Motor::setSollSpeed(int16_t speed){
if(speed > 256)
speed = 256;
if((speed < 100) && (speed > -100))
speed = 0;
if(speed < -256)
speed = -256;
uint16_t pwm;
sollSpeed = speed;
}
if(speed >255)
speed = 255;
if(speed < -255)
speed = -255;
void Motor::interruptEinsprung(){
MyList *zeiger;
zeiger = ArduinoAnpassung::getErstesElement();
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)
if(speed > 0)
{
summeSpeed -= 256;
pwm = 512 + speed * 2;
digitalWrite(pinA , 0);
digitalWrite(pinB , 1);
digitalWrite(LED_BUILTIN , 0 );
}else if (summeSpeed <= -256){
summeSpeed += 256;
}else if (speed < 0){
pwm = 512 - speed * 2;
digitalWrite(pinA , 1);
digitalWrite(pinB , 0);
digitalWrite(LED_BUILTIN , 1 );
}else{
pwm = 1023;
digitalWrite(pinA , 0);
digitalWrite(pinB , 0);
digitalWrite(LED_BUILTIN , 0 );
}
Timer1.pwm(Motor::pinPwm, pwm);
}

View File

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

View File

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

File diff suppressed because it is too large Load Diff