Paso 3: electrónica
La electrónica que opté por usar es todos de paralaje. Estoy usando 2 sello básico usb microcontroladores de Junta de educación. Uno es un Basic Stamp bs2 y otra es un sello bs2PX de alto rendimiento. También estoy usando un microcontrolador de la hélice que está dentro del cuerpo. Hay un controlador de servo de hélice, 24 luces LED y muchos sensores diferentes incluyendo un sensor de temperatura, el acelerómetro y el sensor de bluetooth etc.. Un BASIC Stamp es una computadora single-board que se ejecuta el intérprete PBASIC paralaje de su microcontrolador. Código del desarrollador es almacenada en una EEPROM, que puede utilizarse también para almacenamiento de datos. El lenguaje PBASIC dispone de comandos de fácil uso para la entrada-salida básica, como dispositivos de giro o desactivar, interconexión con sensores, etc.. Comandos más avanzados que la interfaz del módulo BASIC Stamp con otros circuitos integrados, comunican entre sí y operan en redes.
- Control de los servos es un controlador de servo de paralaje hélice USB que funciona los brazos. Puede conectar hasta 15 servos en un tablero. El microcontrolador basic stamp controla el controlador de servo haciendo posible todas las funciones.
- Los motores son controlados de 2 controladores de motor paralaje HB-25 que son controlados también desde otro microcontrolador Bs2.
- Tengo muchos diferentes sensores que utilizar para tomar las lecturas de temperatura, funcionamiento automáticos faros con % de oscuridad y muchas otras aplicaciones.
- Los microcontroladores son los cerebros de esta máquina y las posibilidades son infinitas cuando se trata de las cosas que es capaces de hacer con algunos conocimientos y experimentos.
MODO DE RC:
La medida mediante un mando a distancia RC a mi robot, esto se hace con un 2.4GHzSpektrum sistema DX5e. El receptor está montado en el robot y se conectan los cables del motor de impulsión de dos para el receptor. El regulador del motor HB-25 se corrió en pulsos del servo, por lo que la mayoría de los sistemas RC trabajará con algunas modificaciones. Con esta tecnología y mi cámara inalámbrica puedo sentarse dentro de mi casa y conducir mi robot alrededor de la cuadra y todo lo ver de mi PC. Muy cool!
Este es un código que escribí a la carga en el procesador para hacer este robot vagan alrededor de manera autónoma. Vaga alrededor y cuando encuentra un objeto con su sensor ping que solía montar Dónde está la cámara se detiene y explora los alrededores de un camino claro luego se reanuda a su misión. Aprender a programar lleva tiempo pero una vez lo pruebes guste y quiere aprender más. Todo ello con el software de editor del sello de paralaje. Pase los cables del ping al comienzo 3 pines del puerto 13 ' -----[ I/O Definitions ]------------------------------------------------- PingServo PIN 14' PING))) Servo ' -----[ Variables ]------------------------------------------------------- pulseCount VAR Byte ' utilizado para medición de vueltas ' -----[ Initialization ]-------------------------------------------------- : LOOP hasta HB25 = 1' espera poder HB-25 para arriba ' -----[Main Code ]---------------------------------------------------- Principal: contador = contador + 1' incremento contador pasivo IF contador > 10 entonces IF (distancia > 40) entonces ' es mayor que 40 cm distace?? LAZO ' -----[ Subroutines ]----------------------------------------------------- Forward_Pulse: Índice = 250 a 250' rampa de velocidad máxima ' ************************************************************************* Turn_Left: ' ************************************************************************* Turn_Right: ' girar a la derecha, cerca de 45 grados ' ************************************************************************* Back_Up: ' copia de seguridad
Pase los cables del servo al comienzo 3 pines del puerto 14
Pase los cables del HB-25 al top 3 pines del puerto 15
HB-25 tiene su propia fuente de alimentación con un interruptor.
los cables de puente se funcionó de una HB-25 a la otra conexión ellos juntos que funcionaron en el pulso de un servo.
' {$STAMP BS2}
' {$PBASIC 2.5}
'---[Objeto de detección y evitación]---
Ping del PIN 13' PING))) Sensor
HB25 15' entrada-salida patillas para HB-25
distancia VAR Word ' distancia actual del objeto
oldDistance VAR Word ' viejo valor de distancia
Counter VAR Word ' PING))) contador de ciclo
tarea VAR Nib ' tarea actual
Índice VAR Word ' contador para rampa
BAJO HB25 ' hacer Pin de E/S salida baja
PAUSE 5' espera para HB-25 para inicializar
PULSOUT HB25, 750' parada de Motor 1
PAUSA 1 ' 1 mS retraso
PULSOUT HB25, 750' parada Motor 2
HACER
GOSUB Ping_Out
ENDIF
GOSUB Forward_Pulse
OTRA COSA
GOSUB Back_Up
GOSUB Ping_Around
ENDIF
PULSOUT HB25, 750 + índice ' 1 Motor hacia adelante
PAUSA 1 ' 1 mS retardo para Motor 2 pulso
PULSOUT HB25, 750 - índice ' Motor 2 atrás
PULSOUT PingServo, 750' Ping Servo pulso adelante valor
PAUSE 20
SIGUIENTE
VOLVER
PARA pulseCount = 1 a 35' de la izquierda, sobre 45 grados
PULSOUT HB25, 750 + índice ' 1 Motor hacia adelante
PAUSA 1 ' 1 mS retardo para Motor 2 pulso
PULSOUT HB25, 750 + índice ' Motor 2 atrás
PULSOUT PingServo, 750' Ping Servo pulso adelante valor
PAUSE 20
SIGUIENTE
VOLVER
PARA pulseCount = 1 a 35' número de pulsos a vuelta
PULSOUT HB25, 750 - índice ' 1 Motor hacia adelante
PAUSA 1 ' 1 mS retardo para Motor 2 pulso
PULSOUT HB25, 750 - índice ' Motor 2 atrás
PULSOUT PingServo, 750' Ping Servo pulso adelante valor
PAUSE 20
SIGUIENTE
VOLVER
PARA pulseCount = 0 a 5' número de pulsos para copia de seguridad
PULSOUT HB25, 750' 1 Motor parado Fwd
PAUSA 1 ' 1 mS retardo para Motor 2 pulso
PULSOUT HB25, 750' 2 Motor parado Rev
PULSOUT PingServo, 750' Ping Servo pulso adelante valor
PAUSE 20
SIGUIENTE
VOLVER
Ping_Out: ' PING)))
Contador = 0' Reset contador de retardo pasivo
Ping bajo ' fuerza PING))) línea baja
PULSOUT Ping, 5' activar PING))) pulso
PULSIN Ping, 1, distancia ' reciben el pulso de retorno
distancia = distancia ** 2257' calcular distancia
VOLVER
Ping_Around: ' iniciar 180 grados Pan-Scan
Contador = 0' Reset contador de retardo pasivo
oldDistance = 30' vieja distancia valores de corriente
tarea = 0' prioridad de la tarea actual
' *************************************************************************
PARA pulseCount = 0 a 20' número de pulsos de Spin
Ping bajo ' fuerza PING))) línea baja
PULSOUT PingServo, 1085' Ping Servo 90 izquierda pulso valor
PULSOUT Ping, 5' activar PING)))
PULSIN Ping, 1, distancia «recibir valor de distancia
PAUSE 20' Refresh Delay
SIGUIENTE
distancia = distancia ** 2257' calcular distancia en cm
Distancia de IF > oldDistance luego ' distancia > último camino claro
oldDistance = distancia ' actualizar oldDistance valor
tarea = 1
ENDIF
' *************************************************************************
PARA pulseCount = 0 a 20' número de pulsos de Spin
Ping bajo ' fuerza PING))) línea baja
PULSOUT PingServo, 850' Ping Servo 45 izquierda pulso valor
PULSOUT Ping, 5' activar PING)))
PULSIN Ping, 1, distancia «recibir valor de distancia
PAUSE 20' Refresh Delay
SIGUIENTE
distancia = distancia ** 2257' calcular distancia en cm
Distancia de IF > oldDistance luego ' distancia > último camino claro
oldDistance = distancia ' actualizar oldDistance valor
tarea = 2
ENDIF
' *************************************************************************
PARA pulseCount = 0 a 20' número de pulsos de Spin
Ping bajo ' fuerza PING))) línea baja
PULSOUT PingServo, 400' Ping Servo 45 pulso derecho valor
PULSOUT Ping, 5' activar PING)))
PULSIN Ping, 1, distancia «recibir valor de distancia
PAUSE 20' Refresh Delay
SIGUIENTE
distancia = distancia ** 2257' calcular distancia en cm
Distancia de IF > oldDistance luego ' distancia > último camino claro
oldDistance = distancia ' actualizar oldDistance valor
tarea = 3
ENDIF
' *************************************************************************
PARA pulseCount = 0 a 20' número de pulsos de Spin
Ping bajo ' fuerza PING))) línea baja
PULSOUT PingServo, 225' Ping Servo 90 pulso derecho valor
PULSOUT Ping, 5' activar PING)))
PULSIN Ping, 1, distancia «recibir valor de distancia
PAUSE 20' Refresh Delay
SIGUIENTE
distancia = distancia ** 2257' calcular distancia en cm
Distancia de IF > oldDistance luego ' distancia > último camino claro
oldDistance = distancia ' actualizar oldDistance valor
tarea = 4
ENDIF
Tarea ON GOSUB Task0, Task1, Task2, Task3, Task4
distancia = 50' impedir la exploración de colocación
VOLVER
Task0: ' adelante era camino más claro
GOSUB Turn_Right ' Esto significa camino estrecho
GOSUB Turn_Right ' así que giraremos alrededor de
GOSUB Turn_Right ' puede cambiar el comportamiento
GOSUB Turn_Right ' de cualquiera de las tareas
VOLVER
Task1: ' 90 grados izquierda fue más evidente
GOSUB Turn_Left
GOSUB Turn_Left
VOLVER
Task2: ' 45 grados izquierda fue más evidente
GOSUB Turn_Left
VOLVER
Task3: ' 45 grados derecha fue más claro
GOSUB Turn_Right
VOLVER
Task4: ' 90 grados derecha fue más claro
GOSUB Turn_Right
GOSUB Turn_Right
VOLVER