GOduino II = Arduino + contrôleur de moteur à Vitesse Variable L293D

mises à jour

GOduino II a été présenté sur dangerousprototypes.com

07/04/2012, j’ai ajouté une diapositive de budget pour les lecteurs qui sont demandent où j’ai obtenu mon budget < 20 $ pour le GOduino II.

INTRODUCTION

Le GOduino II est un contrôleur programmable autonome pour robots axée sur la roue. C’est un clone de l’Arduino Uno et un pilote de moteur L293D pour moins de $20. Il régule le sens du moteur ainsi que vitesse. Le prédécesseur de prototype de ceci est le GOduino, une version basique de ce contrôleur sur une maquette. Je maintiendrai mises à jour de ce guide, ici et sur mon blog http://techbitar.blogspot.com

ARRIÈRE-PLAN

J’ai conçu quelques robots de base à l’aide de l’Arduino Uno et boucliers moteurs. Les deux sont parfaits pour le prototypage. Mais j’ai trouvé moi-même démonter mon robots chaque fois que j’avais besoin de construire un autre robot. Il n’est pas rentable d’acheter plus de microcontrôleurs Arduino et boucliers moteurs pour chaque nouveau projet de robot.

Aussi dans des pays comme la Jordanie, où le revenu mensuel moyen est environ 300 $ et un code de tarif outrageusement élevé qui est hostile à la technologie, il devient une nécessité pour les étudiants et responsables de Rechercher localement assemblé des solutions de rechange peu coûteuses et réparables de circuits électroniques importés.

FONCTIONNALITÉ

Le GOduino II travaille pour 2 moteurs seulement et laisse beaucoup de broches Arduino pour capteurs. C’est aussi ma première aventure de BPC de griffes. Si vous regardez à l’arrière de la II GOduino, vous verrez toutes sortes d’indices à mon inexpérience. Et oui, je suis un gars de logiciel c’est toutes relativement nouveau pour moi. Vous remarquerez que certains de mes en-têtes ont des dents proéminentes. J’ai eu quelques accidents tout en soudant. Ma prochaine version sera plus soignée.

C’est peut-être pas la fine étoffe, mais il fait le travail pour moi et mes membres protospace. Si cela peut aider quelqu'un là-bas, s’il vous plaît m’envoyer un lien. Comme toujours, si vous voyez les défauts ou avez des suggestions qui peuvent rendre cela une meilleure conception, s’il vous plaît partager vos pensées.

CRÉDIT

Ce projet est basé sur les œuvres de tant de bonnes gens. Voir les références section en bas pour certains des projets que la Fondation a fourni pour ce modeste projet de PCB.

LISTE DES PIECES

QUANTITÉ
Atmega328p w/Opti bootloader 1
L293D h-pont 1
Cristal de 16Mhz 1
PCB 1
22pf caps 2
100UF cap 1
10uF cap 2
0.1uF cap 4
T7805 régulateur de DC 5V 1
TREMPER les douilles 1 28 broches
Trempez la prise 16 broches 1
1 les en-têtes
Fils de raccordement 10
LED 2
Résistances de 220 Ohms 2
Résistance 10K Ohms 1
Bouton poussoir 1

J’ai estimé le coût total du GOduino II autour de 20 $ + expédition et de manutention.

En ce qui concerne l’Arduino IDE 1.0, il peut être téléchargé gratuitement
http://Arduino.cc/en/main/Software

CARTOGRAPHIE L293D ÉPINGLES À ATMEGA328P (ARDUINO UNO)

Les numéros de puce ci-dessous correspondant aux broches L293D. Ce mappage de broche fonctionne avec mon test Arduino croquis. Mais vous pouvez la modifier en fonction de vos besoins.

1. activer/désactiver le moteur 1. Également utilisé pour contrôler la vitesse du moteur 1. Arduino broche PWM numérique 9. ATmega328 broche 15.
2. Connectez à Arduino à contrôle sens de rotation du moteur 1. Arduino broche numérique 3. ATmega328 broche 5.
3. se connecter au moteur 1 première pole.
4. se connecter à la terre.
5. Raccorder à la terre.
6. se connecter au moteur 1 deuxième pôle.
7. Connectez à Arduino au contrôle sens de rotation du moteur 1.  Arduino broche numérique 2. ATMega328 broche 4.
8. Branchez à alimentation électrique qui équipera les deux moteurs. Cela peut ou ne peut pas être réglée.
9. activer/désactiver pour moteur 2. Également utilisé pour contrôler la vitesse du moteur 2. Se connecter à goupille de Arduino PWM 10. ATmega328 broche 16.
10. Connectez à Arduino contrôle sens de rotation pour le moteur 2. Broche 7 de Arduino. ATmega328 pin 13.
11. se connecter à moteur 2 - pole d’abord.
12. se connecter à la terre.
13. se connecter à la terre.
14. se connecter à moteur 2 - deuxième pole.
15. se connecter à Arduino contrôle sens de rotation pour le moteur 2. Arduino Broche 8. ATmega328 broche 14.
16. Raccorder régulée 5V DC.

NOTES DE PCB

Pourquoi utiliser en-têtes mâles pour exposer les broches de la ATmega328p et les L293d ? Vous pouvez utiliser des en-têtes de style Arduino au lieu de cela, mais j’ai eu beaucoup de mâles en-têtes et beaucoup des fils de raccordement femelle. Mais pour ma prochaine construction de GOduino II, je vais utiliser les en-têtes de style Arduino. Je me sens plus sûre avec des épingles de IC moins exposés.

L293D ACTUEL

Les L293D dans le II GOduino peut gérer soutenue courant de 600 mA par moteur. Il semble y avoir quelque malentendu à propos de cette capacité d’ICs pour gérer 1. 2 a pic de courant par moteur.  La feuille de données L293D dit qu’il fait mais pour une fraction de seconde (100 µs). Ce n’est pas suffisant pour soutenir un moteur fonctionnant à pic/décrochage actuel qui peut durer quelques secondes ou minutes.

Mais la bonne nouvelle est que vous pouvez doubler la 600mA par support moteur par un autre L293D le ferroutage. À sa plus simple expression, cela signifie que souder un L293D sur le dessus de l’autre tout en faisant correspondre les broches.

L293D TENSION

Les L293D doit être alimenté de deux façons. Il faut DC 5V pour ses circuits logiques (16 broches) et puissance de 4, 5V à 36V pour les moteurs (broche 8). Vérifier votre fiche moteur pour trouver sa tension.
J’ai découvert qu’en contrôlant les signaux PWM de l’ATmega328p câblé pour les broches permettent des L293D j’ai réussi à modifier la tension d’alimentation du moteur. Donc même si j’ai d’alimentation 7.2V à mes moteurs via les L293D, je peux le réduire en manipulant les valeurs dans la fonction analogWrite dans mon sketch Arduino.

REDUCTEUR BROSSÉ

Le GOduino II fonctionne avec jusqu'à 2 brossé REDUCTEUR portée de 4, 5V à 36V avec charge de pointe de 600mA pour chaque moteur. Ces moteurs génèrent beaucoup de bruit électrique qui peut causer toutes sortes de questions de lecture du capteur pauvre (si vous avez des détecteurs attachés à votre GOduino II) à constant IC réinitialisations. Pour remédier à cela, j’ai toujours placer un 0.1uF condensateur céramique à travers les pôles de chaque moteur.

ROTATION DU MOTEUR

La direction de votre rotation du moteur est un appel subjectif.  Dans mon code, j’ai utiliser les mots avant et arrière pour décrire certains de mes fonctions. En réalité, la façon dont vous câbler vos moteurs et épinglettes détermine la rotation d’un moteur vers l’avant ou vers l’arrière ou vers la droite vs dans le sens anti-horaire. N’oubliez pas que les moteurs sur les côtés opposés d’un robot plate-forme spin en face de l’autre. Si votre moteur ne tourne le comme vous le souhaitez, souvent que le correctif peut avoir dans votre code sans recourir à la modification du câblage électrique.

PROGRAMMATION GODUINO II

Alors comment vous programmer la ATmega328p sur la GOduino II ? Un ordinateur avec un port série devrait faire bien. Mais sans un port série, Voici les solutions de rechange.

1) si vous avez un modèle de Arduino Uno DIP que vous pouvez juste charger votre esquisse de l’Arduino IDE 1.0 comme vous le faites habituellement. Puis enlever le ATmega328p de votre Arduino Uno et l’insérer dans la prise de GOduino II IC. C’est tout. J’ai commandé quelques ATmega328p ICs (DIP) pré chargé avec le bootloader Arduino Uno, donc je peux les utiliser de cette manière.

2) ou vous pouvez utiliser l’Arduino Uno pour programmer un ATmega328p. SparkFun a un bon tutoriel sur la façon de le faire. Voir l’article réinstaller votre bootloader Arduino et en utilisant un Arduino pour programmer un AVR dans la section Références.

3) ou vous pouvez utiliser un programmateur en ligne comme ceux vendus par Sparkfun, LadyAda ou Pololu pour charger l’Arduino croquis directement à partir de l’IDE Arduino dans le ATmega328p sans la retirer de la prise de GOduino II PCB. Voir le lien dans la section Références de l’article de David A. Mellis sur la façon de construire et de programmer un Arduino Uno sur une maquette. Vous pouvez enregistrer un dollar ou deux en achetant le 328p vide puis le bootloader se brûler si vous avez l’engrenage et savent comment.

L’ESQUISSE DE TEST ARDUINO

L’Arduino 1.0 test croquis ci-dessous apparaît comme un programme long, mais il se répète pour la plupart des blocs de code pour faire tourner les moteurs tout en assurant les goupilles et les pôles moteurs sont correctement branchés. J’ai écrit 4 fonctions pouvant gérer la plupart des tâches de locomotion robot mais n’hésitez pas à le changer tant que le L293D activez épingles (1,9) sont raccordées aux broches PWM sur l’Arduino/ATmega328p et le code ci-dessous est mises à jour pour refléter un RECABLAGE de pins.

/*
REMIXÉ PAR : TECHBITAR / HAZIM BITAR

DATE: 3 AVRIL 2012

PROJET : GOduino II TEST

FONCTION : Ce croquis est un programme de test de Arduino 1.0 IDE pour la GOduino II PCB bord. Le GOduino II est un pont en h Arduino Uno et L293D aka moteur permettant un déplacement vers l’avant et vers l’arrière des moteurs ainsi que la vitesse variable intégré « runtime ».  Ce code de test suppose deux moteurs (chaque < 600mA dans le courant de crête) sont attachés à la GOduino II

Cette esquisse de l’échantillon appelle les trois fonctions suivantes avec la variable motornum = 1 ou 2 pour signifier 1 moteur et moteur 2.

-motorforward (int motornum)
-motorback (int motornum)
-motorstop (int motornum)
-motorspeed (int motor1, int motor2)

LICENCE : C’est un shareware, mais s’il vous plaît donner crédit.

Site Web : http://techbitar.blogspot.com

Courriel : techbitar AT gmail DOT com

*/

carte des pôles moteur aux broches de l’Arduino
#define motor1pole1 2
#define motor1pole2 3
#define motor2pole1 7
#define motor2pole2 8

carte moteur L293d activez broches à broches de l’Arduino
#define enablePin1 9
#define enablePin2 10

#define M1_MAX_SPEED 100
#define M2_MAX_SPEED 100

#define motordelay 30
#define debugmotorsec 3000

void setup() {}
Serial.Begin(9600) ;

ensemble mappé L293D motor1 et moteur 2 activez pins sur Arduino à la sortie (pour activer/désactiver motor1 et motor2 via L293D)
pinMode (enablePin1, sortie) ;
pinMode (enablePin2, sortie) ;

la valeur des pôles moteurs mappés broches de l’Arduino (via L293D)
pinMode (motor1pole1, sortie) ;
pinMode (motor1pole2, sortie) ;
pinMode (motor2pole1, sortie) ;
pinMode (motor2pole2, sortie) ;
Motorspeed (0, 0) ;
}

int mspeed = 100 ;  Choisissez une vitesse au départ jusqu'à 255

void loop() {}

régler la vitesse du moteur 1 et 2 à la même vitesse
Motorspeed (mspeed, mspeed) ;

Faites tourner le moteur 1 que dans un sens
Serial.Print ("moteur 1 @ vitesse d’avancement:") ;
Serial.println(mspeed) ;
motorforward(1) ;
Delay(debugmotorsec) ;
Motorstop(1) ;

Faites tourner le moteur 2 que dans un sens
Serial.Print ("moteur 2 @ vitesse d’avancement:") ;
Serial.println(mspeed) ;
motorforward(2) ;
Delay(debugmotorsec) ;
Motorstop(2) ;

Faites tourner le moteur 1 seulement dans le sens inverse
Serial.Print ("arrière moteur 1 Vitesse @:") ;
Serial.println(mspeed) ;
motorback(1) ;
Delay(3000) ;
Motorstop(1) ;

Faites tourner le moteur 2 uniquement dans la direction opposée
Serial.Print ("moteur 2 retour Vitesse @:") ;
Serial.println(mspeed) ;
motorback(2) ;
Delay(debugmotorsec) ;
Motorstop(2) ;

arrêter les deux moteurs 1 et 2
Serial.println ("les deux moteurs STOP pendant 2 secondes") ;
Motorstop(1) ;
Motorstop(2) ;
Delay(2000) ;

Faites tourner les deux moteurs dans une direction
Serial.Print ("les deux moteurs @ vitesse d’avancement:") ;
Serial.println(mspeed) ;
motorforward(1) ;
motorforward(2) ;
Delay(debugmotorsec) ;

arrêter les deux moteurs
Serial.println ("les deux moteurs STOP pendant 2 secondes") ;
Motorstop(1) ;
Motorstop(2) ;

Delay(2000) ;
Faites tourner les deux moteurs en sens inverse
Serial.Print ("les deux moteurs de retour @ Vitesse:") ;
Serial.println(mspeed) ;
motorback(1) ;
motorback(2) ;
Delay(debugmotorsec) ;

arrêter les deux moteurs
Serial.println ("les deux moteurs STOP pendant 2 secondes") ;
Motorstop(1) ;
Motorstop(2) ;
Delay(2000) ;

rotation de deux moteurs mais en directions opposées
Serial.Print ("MOTOR1 avec impatience | MOTOR2 DOS @ VITESSE: ") ;
Serial.println(mspeed) ;
motorforward(1) ;
motorback(2) ;
Delay(debugmotorsec) ;

arrêter les deux moteurs
Serial.println ("les deux moteurs STOP pendant 2 secondes") ;
Motorstop(1) ;
Motorstop(2) ;
Delay(2000) ;

Faites tourner les deux moteurs dans l’autre sens opposé
Serial.Print ("MOTOR1 retour | MOTOR2 @ VITESSE D’AVANCEMENT: ") ;
Serial.println(mspeed) ;
motorback(1) ;
motorforward(2) ;
Delay(debugmotorsec) ;

arrêter les deux moteurs
Serial.println ("les deux moteurs STOP pendant 2 secondes") ;
Motorstop(1) ;
Motorstop(2) ;
Delay(2000) ;

mspeed += 50 ;  Ajouter 50 à la vitesse de rotation moteur. Vitesse max 255

régler la vitesse du moteur 1 et 2 à la même vitesse de nouveau
Motorspeed(mspeed,mspeed) ;

}

FONCTIONS MOTRICES

void motorstop (int motornum) {}
Delay(motordelay) ;
Si (motornum == 1) {}
digitalWrite (motor1pole1, basse) ;
digitalWrite (motor1pole2, basse) ;
}
ElseIf (motornum == 2) {}

digitalWrite (motor2pole1, basse) ;
digitalWrite (motor2pole2, basse) ;
}
Delay(motordelay) ;
}

void motorforward (int motornum) {}
Si (motornum == 1) {}
digitalWrite (motor1pole1, HIGH) ;
digitalWrite (motor1pole2, basse) ;
}
ElseIf (motornum == 2) {}

digitalWrite (motor2pole1, basse) ;
digitalWrite (motor2pole2, HIGH) ;
}
Delay(motordelay) ;
}

void motorback (int motornum) {}
Si (motornum == 1) {}
digitalWrite (motor1pole1, basse) ;
digitalWrite (motor1pole2, HIGH) ;
}
ElseIf (motornum == 2) {}
digitalWrite (motor2pole1, HIGH) ;
digitalWrite (motor2pole2, basse) ;
}
Delay(motordelay) ;
}

motorspeed Sub (int motor1speed, int motor2speed) {}
Si (motor1speed > M1_MAX_SPEED) motor1speed = M1_MAX_SPEED ; limite de vitesse maximale
Si (motor2speed > M2_MAX_SPEED) motor2speed = M2_MAX_SPEED ; limite de vitesse maximale
Si (motor1speed < 0) motor1speed = 0 ; garder le moteur au-dessus de 0
Si (motor2speed < 0) motor2speed = 0 ; garder la vitesse du moteur au-dessus de 0
analogWrite (enablePin1, motor1speed) ;
analogWrite (enablePin2, motor2speed) ;
}

// ====================================

DERNIÈRES NOTES

Je vais continuer à faire évoluer l’II GOduino tout en recherchant les meilleures solutions qui sont élevées sur le score de réparabilité et abrégeabilité. A 30 $ Arduino Uno pourrait finir par coûte 60 $ après les droits de douane et de la navigation en Jordanie. Et si quelque chose ne va pas avec elle, vous pourriez aussi bien jeter puisqu’il n’existe aucune installation locale pour remplacer ou réparer les composants CMS. Étant donné que les parties électroniques de base sont facilement disponibles localement, il devrait être facile et peu coûteux à construire et réparer les GOduino II. DIP se nourrit...

BUDGET

Quelques lecteurs demande où acheter les pièces de rester dans le budget. J’ai commander mes pièces de Futurlec.com l’ensemble GOduino équivaut à moins de 12 $ Si vous n’avez pas un microcontrôleur Arduino UNO DIP et ne souhaitez pas en acheter un, vous aurez besoin d’un programmeurs FTDI USB-série. Vous pouvez acheter ces pour environ 15 $

Futurlec n’est pas mon parrain et je n’obtiens commission ou des remises pour les mentionner.

RÉFÉRENCES

GOduino : L’Arduino Uno + moteur pilote clone

Construire un Arduino sur une maquette par David A. Mellis
http://Arduino.cc/en/main/standalone

Commander vos moteurs L293D et Arduino par Guilherme Martins

Commander un moteur DC avec puce Arduino et L293D
http://luckylarry.co.uk/Arduino-projects/Control-a-DC-Motor-with-Arduino-and-l293d-Chip

Réinstaller votre bootloader Arduino
http://www.Sparkfun.com/tutorials/247

En utilisant un Arduino pour programmer un AVR
http://www.Sparkfun.com/tutorials/200

Articles Liés

Modules d’Arduino - L298N double pont en H contrôleur de moteur

Modules d’Arduino - L298N double pont en H contrôleur de moteur

Guide de démarrage rapide et simple d'utilisation et d'explorer un module L298N double pont en H contrôleur de moteur avec un Arduino.Le modèle dans l'exemple que j'utilise est sur Ebay.Matériel nécessaire :Module de L298N double pont en H contrôleur
Contrôleur de moteur Arduino Lego EV3 enregistrer 45 $

Contrôleur de moteur Arduino Lego EV3 enregistrer 45 $

En faisant un contrôleur de moteur bricolage lego ev3Étape 1: Intro J'ai un kit appelé le lego mindstorms EV3 c'est un incroyable robotique de 349 $ kit qui vraiment est simple à construire comme lego, mais dispose de fonctionnalités vraiment génial
Contrôleur de moteur 24V pour 24 $, RC & Arduino

Contrôleur de moteur 24V pour 24 $, RC & Arduino

Comme beaucoup de gens, j'ai voulu utiliser la base d'un fauteuil roulant électrique pour les projets de la télécommande. Toutefois, bon gradateurs sont coûteux, et j'ai pensé qu'il devait y avoir une solution moins coûteuse. J'ai acheté initialement
Comment construire un contrôleur de moteur Conseil L293D pour Arduino

Comment construire un contrôleur de moteur Conseil L293D pour Arduino

Je travaille sur un petit robot qui peut être contrôlé par un Arduino utilisant la communication sans fil. Mais j'ai été découragé par le nombre de fils reliant l'Arduino et le montage d'essai. J'ai donc décidé de réduire le nombre de fils par faire
GOduino - l’Arduino Uno + clone pilote moteur

GOduino - l’Arduino Uno + clone pilote moteur

mises à jour04/04/2012 : la version pcb avec moteur à vitesse variable, GOduino II, est sur mon blog http://techbitar.blogspot.com/2012/04/goduino-ii-motor-driver-arduino-uno.html et ici29/03/2012 : corrections de la section de calculs de charge du m
Carte de contrôleur de moteur L298N

Carte de contrôleur de moteur L298N

Un guide sur la façon d'utiliser la carte de contrôleur L298N moteur pilote, il s'agit d'une planche double contrôleur de moteur qui vous permettent de contrôler la direction et la vitesse de deux moteurs à courant continu ou un moteur pas à pas.Le L
Contrôler le contrôleur de moteur de Actobotics double

Contrôler le contrôleur de moteur de Actobotics double

Le contrôleur de moteur double Actobotics (DMC) puisse contrôler 1 ou 2 moteurs à 4,8 – 16 volts et remettre 20 ampères par moteur en continu et jusqu'à 30 ampères par moteur momentanément (PIC). Il y a un certain nombre de différentes façons vous po
Attiny85 comme un contrôleur de moteur pas à pas Step/Dir

Attiny85 comme un contrôleur de moteur pas à pas Step/Dir

Quelque part en Grèce, quelqu'un a fait quelque chose de jamais fait auparavant...Vu ces choses avant ?Chose: 1Chose: 2Chose: 3Oh, vous avez ! Vous avez acheté un d'eux que vous dites ? Oh... Ne vous inquiétez pas, j'ai fait trop.Ils ont fait le trav
En utilisant le contrôleur de moteur WASP (ESC)

En utilisant le contrôleur de moteur WASP (ESC)

Dans ce Instructable nous apprendront à contrôler un contrôleur de moteur WASP en utilisant un Arduino.Le contrôleur de moteur WASP est un Electronic Speed Controller (ESC), prenant une entrée signal RC provenant d'un Arduino et stimuler il à un nive
Module de contrôleur de moteurs L293D / tutorial

Module de contrôleur de moteurs L293D / tutorial

L293D est une puce qui nous permettent de contrôler les deux moteurs avec seulement une carte Arduino ou autres microcontrôleurs. Cependant, j'ai eu un projet qui nécessitait le contrôle de quatre moteurs à courant continu ensemble. Récemment, j'ai a
Contrôleur de moteur DC

Contrôleur de moteur DC

Cet simple contrôleur de moteur DC permet une commande de moteur de direction et a été construit entièrement de pièces électriques récupérés. À l'aide du MOSFET pour contrôle moteur plutôt que des croustilles de contrôle, permet à un bloc d'alimentat
Robot d’obstacles en évitant avec L298N double pont en H contrôleur de moteur et le capteur à ultrasons

Robot d’obstacles en évitant avec L298N double pont en H contrôleur de moteur et le capteur à ultrasons

Hé les gars!!Je poste ici quelques images du robot :le matériel nécessaire :maquette de l'Arduino.montage d'essai.capteur à ultrasons.2 moteurs à courant continufils.Contrôleur de moteur L298N double pont h.chassi en aluminium.le code de l'arduino :h
Contrôleur de moteur en ligne DC

Contrôleur de moteur en ligne DC

gens,Aujourd'hui, je veux partager mon expérience avec Atmega328 arduino Conseil contrôle moteur à courant continu via un navigateur web,Nous pouvons contrôler notre moteur en ligne si nous avons de la part de la propriété intellectuelle dans le mond
Contrôleur de moteur simple DC

Contrôleur de moteur simple DC

si vous construisez un robot ou autre gadget microcontrolled, vous aurez besoin piloter des moteurs à courant continu avant et en arrière. Dans ce instructable, je démontrerai un circuit simple et peu coûteux qui contrôle un moteur à courant continu