mirror of
https://gitlab.com/fabinfra/fabhardware/absaugungsklappensteuerung.git
synced 2025-03-12 14:51:44 +01:00
PWM auf einen Pin am Arduino Nano umgebaut. Schaltplan und Software angepasst.
This commit is contained in:
parent
6449358671
commit
6a4fff7f01
@ -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);
|
||||
}
|
||||
|
@ -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)
|
||||
{
|
||||
summeSpeed -= 256;
|
||||
if(speed > 0)
|
||||
{
|
||||
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);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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
Loading…
x
Reference in New Issue
Block a user