1 pièce(s) jointe(s)
Programme H-brige en servo
h-bridge besoin d'aide pour un programme
alors j'ai acheter une carte pour vraiment pas cher,sur un site bien connu ebay.
don perso je pense que l'on peut lui faire de multiple application...
elle comporte un atmega48 qui est de la mémé famille que le atmega328 pin a pin moins de mémoire pour le atmega48.
est un driver mosfet de puissance HIP4081A.
mon but est de détourner de sa première utilisation
variateur de vitesse pour un moteur a courant continu 50v 2000w...Pas mal, hein ?
j'ais décortiquer la carte
pour l'application dont j'aurai besoin je voudrai le transformer en un gros servo h-bridge.
mai je ne suis pas sur de mon code,je n'ai pas mi de pwm (analogWrite) car je ne savais pas trop quoi faire.
si l'on peut m'aider merci
cordialement
albert
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| /*
H-bridge_servo_ATmega48
driver mosfet HIP4081A
OUTPUT PIN24/PC1 (ADC1/PCINT9)=enable disable circuits HIP4081A .............a mettre a l'état haut (HIGH) ARDUINO= A1
....................................................
sens de rotation moteur
OUTPUT pin9/(PCINT21/OC0B/T1) PD5 =(ALI -> circuits HIP4081A)...utiliser pour ce programme ARDUINO= D5
OUTPUT PIN10/(PCINT22/OC0A/AIN0) PD6 = (bli -> circuits HIP4081A)...utiliser pour ce programme ARDUINO= D6
....................................................
pin25/PC2 (ADC2/PCINT10)...input/OUTPUT =A2
pin26/PC3 (ADC3/PCINT11)...input/OUTPUT =a3
pin27/PC4 (ADC4/SDA/PCINT12)...input ...utiliser pour ce programme (position_moteur) ARDUINO=A4
PIN23/PC0 (ADC0/PCINT8)...INPUT ...utiliser pour ce programme pulsein ARDUINO=A0
*/
unsigned long ch1; // canal valeur
unsigned long temps;
int position_moteur;
int SENSOR_PIN = 27; // potentiometre ARDUINO=A4
int RPWM_Output = 9; // Arduino PWM broche de sortie 5
int LPWM_Output = 10; // Arduino PWM broche de sortie 6
int val;
int enable_circuit = 24;
void setup()
{
pinMode(SENSOR_PIN, INPUT);// PIN 27 = ARDUINO = A4
pinMode(enable_circuit, INPUT);// PIN 24 = ARDUINO = A1
pinMode(23, INPUT);// PIN 23 = ARDUINO = A0
pinMode(RPWM_Output, OUTPUT);
pinMode(LPWM_Output, OUTPUT);
}
void loop()
{
digitalWrite(enable_circuit, HIGH);//enable & disable circuits HIP4081A
ch1 = pulseIn(23, HIGH, 25000); // Lire PWM.. largeur d'impulsion du rc pwm
temps = map(ch1,1000, 25000,-500,500);
val = analogRead(SENSOR_PIN); //lecture de la position du moteur
position_moteur = map(val, 0, 1023,-500,500);
//*************************************************************************
switch(temps)
{
case if (temps < 512):
{
// Rotation inverse
digitalWrite(LPWM_Output, LOW); //analogWrite
digitalWrite(RPWM_Output, HIGH);//analogWrite
break;
}
case if (temps < -512):
{
// Rotation vers l'avant
digitalWrite(LPWM_Output, HIGH);//analogWrite
digitalWrite(RPWM_Output, LOW);//analogWrite
break;
}
case if (temps == position_moteur):
{
// stop moteur
digitalWrite(LPWM_Output, LOW);++
digitalWrite(RPWM_Output, LOW);
break;
} |
Pièce jointe 210397