Beste allen, gisteren enkele uren lopen zoeken maar er zelf niet uitgeraakt. Ik probeer een DC motor te gebruiken alsook een servo. Voor de DC Motor gebruik ik 2 PWM signalen die naar een HW354 gaan dit werkt perfect. Vervolgens had ik aan mijn code de servo.h toegevoegd en deze werkt ook, samen doen ze het niet
Voor de mensen die een globaal idee willen hebben van waarvoor ik het wil gaan gebruiken (niet echt relevant voor het probleem maar wel voor context)
Ik heb een afstandsbediening gebouwd met een Arduino Mega, 2 joysticks, 2 potmeters en een berg pulse knoppen, deze zijn voorzien van een RF module, dit geheel vormt de afstandsbediening
Vervolgens ben ik de micro Pro aan het coden als ontvanger met daaraan een aantal led kringen, 2 servo's waarvan 1 voor het sturen en 1 voor de achterlift en een electro motor. Dit geheel zal in een Siku Control 1:32 tractortje ingebouwd worden. Het geheel zal dus een tractor op afstandsbediening zijn.
Ik gebruik:
Arduino Micro Pro 5V 16 Mhz -> Zelfde code ook getest op een volwaardige originele UNO en identiek hetzelfde gedrag
HW354 motor sturing (H Bridge) waarvan ik maar 1 van de 2 poorten gebruik
standaard servo
Dit is de layout van de controller

Motor controller hangt aan poorten 9 en 10
Servo hangt aan poort 6
De motor controller werkt vrij eenvoudig en heeft geen extra modules nodig.
Pin 9 digital low - Pin 10 pwm -> regelbaar vooruit
Pin 10 digital low - Pin 9 pwm -> regelbaar achteruit
Voor de servo gebruik ik gewoon de standaard code.
Wat ik al gevonden of geprobeerd heb is dus beide onafhankelijk laten werken en dat werkt perfect. Het gaat mis op het moment dat ik voor de servo de attach functie oproep, vanaf dat moment wil de electro motor niet meer.
Ik begin me ernstig vragen te stellen bij de servo.h header en hoe daar alles in werkt, het lijkt er op dat die iets doet met de interne klokken en daardoor geen beschikbaarheid meer te geven voor de pwm van de motor kanalen.
Mij leek het toch wel te moeten kunnen ... 1 motortje en 1 servo samen laten werken leek me op het eerste zicht geen rocket science ...
Dit is de code die ik tot nu toe gebruik:
Voor de mensen die een globaal idee willen hebben van waarvoor ik het wil gaan gebruiken (niet echt relevant voor het probleem maar wel voor context)
Ik heb een afstandsbediening gebouwd met een Arduino Mega, 2 joysticks, 2 potmeters en een berg pulse knoppen, deze zijn voorzien van een RF module, dit geheel vormt de afstandsbediening
Vervolgens ben ik de micro Pro aan het coden als ontvanger met daaraan een aantal led kringen, 2 servo's waarvan 1 voor het sturen en 1 voor de achterlift en een electro motor. Dit geheel zal in een Siku Control 1:32 tractortje ingebouwd worden. Het geheel zal dus een tractor op afstandsbediening zijn.
Ik gebruik:
Arduino Micro Pro 5V 16 Mhz -> Zelfde code ook getest op een volwaardige originele UNO en identiek hetzelfde gedrag
HW354 motor sturing (H Bridge) waarvan ik maar 1 van de 2 poorten gebruik
standaard servo
Dit is de layout van de controller

Motor controller hangt aan poorten 9 en 10
Servo hangt aan poort 6
De motor controller werkt vrij eenvoudig en heeft geen extra modules nodig.
Pin 9 digital low - Pin 10 pwm -> regelbaar vooruit
Pin 10 digital low - Pin 9 pwm -> regelbaar achteruit
Voor de servo gebruik ik gewoon de standaard code.
Wat ik al gevonden of geprobeerd heb is dus beide onafhankelijk laten werken en dat werkt perfect. Het gaat mis op het moment dat ik voor de servo de attach functie oproep, vanaf dat moment wil de electro motor niet meer.
Ik begin me ernstig vragen te stellen bij de servo.h header en hoe daar alles in werkt, het lijkt er op dat die iets doet met de interne klokken en daardoor geen beschikbaarheid meer te geven voor de pwm van de motor kanalen.
Mij leek het toch wel te moeten kunnen ... 1 motortje en 1 servo samen laten werken leek me op het eerste zicht geen rocket science ...
Dit is de code die ik tot nu toe gebruik:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| #include <Servo.h> Servo mySteering; //define servo limits int SteerMinPos = 0; //steeringservo minimum position int SteerMaxPos = 80; //steeringservo maximum position int SteeringSteps = 1; //steps for the steeringservo int SteeringPin = 6; //define the motor pins these need to be PWM's int MOTOR_IN1 = 9; int MOTOR_IN2 = 10; int pos = 0; void setup() { Serial.begin(9600); mySteering.attach(SteeringPin); pinMode(MOTOR_IN1, OUTPUT); pinMode(MOTOR_IN2, OUTPUT); } void loop() { for (pos = SteerMinPos; pos <= SteerMaxPos; pos += SteeringSteps) { // in steps of 1 degree mySteering.write(pos); Serial.println(pos); digitalWrite(MOTOR_IN2, LOW); analogWrite(MOTOR_IN1, pos * 2); delay(15); } for (pos = SteerMaxPos; pos >= SteerMinPos; pos -= SteeringSteps) { mySteering.write(pos); Serial.println(pos); digitalWrite(MOTOR_IN1, LOW); analogWrite(MOTOR_IN2, pos * 2); delay(15); } |