Icono del sitio AranaCorp

Controle un motor CC con Raspberry Pi

Uno de los principales objetivos en robótica es hacer que las cosas se muevan por sí mismas. Para dar movimiento a un robot, a menudo se utilizan motores eléctricos, como los motores de corriente continua (CC), especialmente para robots móviles. En este tutorial, veremos cómo controlar dicho motor usando RaspberryPi y un puente H.

Prerequisite: Programación con Raspberry Pi

Material

Motor de corriente continua

Los motores de corriente continua a menudo se usan con una caja de cambios para aumentar el par mientras se mantienen las pequeñas dimensiones. DC Motor es bastante simple de usar. Para hacerlo funcionar, lo único que debe hacer es aplicarle voltaje. El signo y el nivel del voltaje determinarán la velocidad y el sentido de rotación.

Para modular el voto aplicado al motor, se puede usar un relé eléctrico o un puente en H.

H-bridge

Un puente H distribuye energía al motor eléctrico y modula el voltaje de acuerdo con las señales enviadas a sus entradas. Se puede dibujar como cuatro interruptores que redirigirán la corriente según el comando del microcontrolador.

El dispositivo que utilizamos para este proyecto es un SN754410NE. Puede conducir dos motores de CC y tiene varios pines que tienen su propio propósito.

Pequeño recordatorio sobre el pinout:

Cableado del motor CC

Stepper se alimenta a través del módulo ULN2003A. Las entradas del módulo del 1 al 4 están conectadas a la salida 18,22,24,26 (GPIO24, GPIO25, GPIO8, GPIO7) del RaspberryPi. Los pines + y – del módulo están conectados al pin 5V y GND del RaspberryPi.

Dependiendo de la potencia requerida para el motor, se puede usar la salida de voltaje de la Raspberry Pi, pero se recomienda encarecidamente usar una fuente de alimentación externa para proteger el microcontrolador.

Como recordatorio, aquí está el pinout de la Raspberry Pi 3.

Código básico para controlar un motor CC

Para conducir el motor, se debe habilitar Hbridge y se debe enviar una señal PWM hacia adelante o hacia atrás, dependiendo de la dirección de rotación.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import RPi.GPIO as GPIO 
from time import sleep

GPIO.setmode(GPIO.BCM)
#Pins 18 22 24 GPIO 24 25 8
Motor1E = 24 #  Enable pin 1 of the controller IC
Motor1A = 25 #  Input 1 of the controller IC
Motor1B = 8 #  Input 2 of the controller IC


GPIO.setup(Motor1A,GPIO.OUT)
GPIO.setup(Motor1B,GPIO.OUT)
GPIO.setup(Motor1E,GPIO.OUT)

forward=GPIO.PWM(Motor1A,100) # configuring Enable pin for PWM
reverse=GPIO.PWM(Motor1B,100) # configuring Enable pin for PWM


if __name__ == '__main__' :
	forward.start(0) 
	reverse.start(0)

	# this will run your motor in reverse direction for 2 seconds with 80% speed by supplying 80% of the battery voltage
	print "GO backward"
	GPIO.output(Motor1E,GPIO.HIGH)
	forward.ChangeDutyCycle(0)
	reverse.ChangeDutyCycle(80)
	sleep(2)


	# this will run your motor in forward direction for 5 seconds with 50% speed.
	print "GO forward"
	GPIO.output(Motor1E,GPIO.HIGH)
	forward.ChangeDutyCycle(50)
	reverse.ChangeDutyCycle(0)
	sleep(5)

	#stop motor
	print "Now stop"
	GPIO.output(Motor1E,GPIO.LOW)
	forward.stop() # stop PWM from GPIO output it is necessary
	reverse.stop() 

	GPIO.cleanup()

NB: Tenga cuidado al copiar el código Python de Internet, puede encontrar problemas de sangría que conducen a un error de compilación.

Sources

Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código

Salir de la versión móvil