Sensores de efecto Hall 1: Posicionar el Control de (5 / 6 paso)

Paso 5: autoguiado hacia el blanco

Incluso cuando intentamos nuestro mejor para contar cada pulso puede haber ocasiones en podemos perder unos cuantos y poco a poco pierden precisión con el tiempo. Para minimizar esto que podemos utilizar una rutina autoguiados hacia el blanco! La idea es enviar el actuador a una determinada posición (totalmente extendido o completamente retraída) y las cuentas en un valor conocido. Generalmente es más fácil retraer el actuador y las cuentas se establece en 0. En el código siguiente que se restablecerá hasta cuenta valor cuando completamente extendido y restablecer a 0 cuando está totalmente retraído.

Para ello necesita una manera de saber cuando el motor está en sus límites. Aquí vamos a utilizar la detección de la corriente de la MegaMoto a ver cuando la corriente cae a 0. Cuando vemos que el actuador tiene golpear el interruptor de límite y detenido. Tenemos un pequeño contador corriendo ya que a veces la corriente puede denunciar a un falso 0. Asegurándose de que la corriente es 0 para una longitud del tiempo que sabemos que el motor realmente está en un límite y no obtener lecturas falsas.

Ver código adjunto y los comentarios para más información:

 #define amp0 A5 #define PWMA0 6 #define PWMB0 5 #define enable0 13 //pins for first MegaMoto #define switch0 7 //Up button to add counts #define switch1 8 //Down button to subtract counts #define hall0 2 //interrupt pins for hall effect sensors int enable = 0; //enable pin for megaMoto int lowampLimit = 0;//Low limit to detect when actuator stops int amps = 0; //current readings int timedelay[] = {750, 50}; //first, regular delay for feedback int hitLimits = 0; int hitLimitsmax = 10;//value for knowing when retracted int count[] = {0};//Actuator int maxCounts = 1150;//number of counts when fully extended int sw[] = {1, 1}; //switch up, switch down int prev[] = {0, 0};//previous switch state int currentPos = 0;//current position int threshold = 1; int destination = 0; bool forwards = false; bool backwards = false;// motor states bool extended = false; bool retracted = false;//actuator positions bool firstRun = true;//first run of the motor once the button is pushed void setup() { pinMode(amp0, INPUT); digitalWrite(amp0, LOW);//set Current sensors pinMode(PWMA0, OUTPUT); pinMode(PWMB0, OUTPUT);//set PWM outputs pinMode(enable0, OUTPUT); digitalWrite(enable0, LOW);//set enable and turn board OFF pinMode(switch0, INPUT); pinMode(switch1, INPUT); digitalWrite(switch0, HIGH); digitalWrite(switch1, HIGH);//set up/down switch, enable enternal relays pinMode(hall0, INPUT); digitalWrite(hall0, LOW);//set hall, set low to start for rising edge attachInterrupt(0, speed0, RISING); //enable the hall effect interupts retracted = true;//start retracted extended = false; Serial.begin(9600); }//end setup void loop() { ReadInputs();//check input button, calculate speeds if (sw[0] == 0 && sw[1] == 1 && backwards == false) destination = currentPos - 115;//dont change destination while moving else if (sw[0] == 1 && sw[1] == 0 && forwards == false) destination = currentPos + 115;//dont change destination while moving Serial.print("count[0] "); Serial.println(count[0]); Serial.print("currentPos "); Serial.println(currentPos); Serial.print("destination "); Serial.println(destination); if ((destination >= (currentPos - threshold)) && (destination <= (currentPos + threshold))) stopMoving();//stop if you're close enough else if (destination > currentPos) goForwards();//move if you need to else if (destination < currentPos) goBackwards();//move if you need to for (int i = 0; i <= 1; i++) prev[i] = sw[i]; //store switch values as previous values }//end loop void speed0() { if (forwards == true) count[0]++; //if moving forwards, add counts else if (backwards == true) count[0]--; //if moving back, subtract counts }//end speed0 void ReadInputs() { amps = analogRead(amp0);//read current sw[0] = digitalRead(switch0), sw[1] = digitalRead(switch1);//check switches currentPos = count[0];//set where you are }//end read inputs void goForwards() { forwards = true; backwards = false;//set travel direction getFeedback();//check current draw digitalWrite(enable0, HIGH);//enable board analogWrite(PWMA0, 255); analogWrite(PWMB0, 0);//apply speeds }//end goForwards void goBackwards() { forwards = false; backwards = true;//set travel direction getFeedback();//check current draw digitalWrite(enable0, HIGH);//enable board analogWrite(PWMA0, 0); analogWrite(PWMB0, 255);//apply speeds }//end goBackwards void stopMoving() { forwards = false; backwards = false;//set travel direction analogWrite(PWMA0, 0); analogWrite(PWMB0, 0);//set speeds to 0 delay(10); digitalWrite(enable0, LOW);//disable board }//end stopMoving void getFeedback() { amps = analogRead(amp0); Serial.print(" Amp readings - "), Serial.println(amps); if (amps <= lowampLimit && hitLimits < hitLimitsmax) hitLimits = hitLimits + 1; else hitLimits = 0; if (hitLimits == hitLimitsmax && backwards == true) { Serial.println("RETRACTED"); retracted = true; count[0] = 0; //reset counter when homed destination = 0; } if (hitLimits == hitLimitsmax && forwards == true) { Serial.println("EXTENDED"); extended = true; count[0] = maxCounts; //reset counter when extended destination = maxCounts; } }//end getFeedback 

Artículos Relacionados

Sensores de efecto Hall 3: PID Control

Sensores de efecto Hall 3: PID Control

En este Instructable, estamos concluyendo nuestra serie de tres partes sobre los sensores de efecto hall aplicando el control PID para el control de nuestra posición. Vamos a ir sobre las tres partes de control PID (proporcional, Integral, derivado)
Sensores de efecto Hall 2: Sincronización de movimiento

Sensores de efecto Hall 2: Sincronización de movimiento

En este Instructable ampliará en lo que aprendimos la semana pasada en la introducción del efecto hall Instructable. Vamos a utilizar los efectos de salón en dos actuadores para sincronizar el movimiento de los actuadores. Haremos el seguimiento amba
Sensor de efecto Hall

Sensor de efecto Hall

Un sensor de efecto Hall es un sensor de esa respuesta a un campo magnético.Cuando el sensor hall se pone en un campo magnético los electrones recorren se moverá a un lado del sensor. El sensor será entonces un positivo y un lado negativo y crear una
Motor del eje de la bicicleta eléctrica - cómo reemplazar un Sensor de efecto Hall

Motor del eje de la bicicleta eléctrica - cómo reemplazar un Sensor de efecto Hall

motores sin escobillas usan controladores electrónicos en lugar de sistemas de cepillo para controlar la sincronización y la distribución de potencia al motor. Para hacer esto, algunos sistemas de control utilizan sensores de efecto hall dentro del c
¿Magno-Sniffer (magnético Sniffer sonda Whistler lo usando un Sensor de efecto Hall)

¿Magno-Sniffer (magnético Sniffer sonda Whistler lo usando un Sensor de efecto Hall)

trabajo con imanes y desea una forma rápida de decirle a los nortes de su sur? ¿Quieres tener una idea de sus formas de campo? ¿Como hacer weeeeeeeooooooeeeeeeoooo ruidos?Construir un Magno-Sniffer usando un sensor de efecto hall, circuito oscilador
Iluminación LED activa mediante sensores de efecto Hall de la puerta

Iluminación LED activa mediante sensores de efecto Hall de la puerta

he sido significado para hacer algo fresco para mi dormitorio este semestre que viene y decidió que algunas luces de armario personalizado se ven muy bien. En este Instructable, te mostraré cómo hacer alguna bonita luces que se encenderán de forma au
Monitoreo de uso residencial del agua mediante la lectura de contador del agua municipal con sensor de efecto Hall + Arduino

Monitoreo de uso residencial del agua mediante la lectura de contador del agua municipal con sensor de efecto Hall + Arduino

si quieres controlar tu consumo de agua, como parte de un proyecto de monitoreo y DIY domótica inteligente, entonces este instructable puede ayudarle a lograr ese objetivo. La solución aquí es no invasiva, utiliza su medidor de agua municipal existen
RPM del ventilador con sensor de efecto hall interno y Arduino (introducción a la interrupción de Hardware y pantalla LCD)

RPM del ventilador con sensor de efecto hall interno y Arduino (introducción a la interrupción de Hardware y pantalla LCD)

Para mi proyecto de trabajo, tuve que medir la velocidad de giro del rotor en revoluciones por minuto (RPM) de un ventilador de computadora modificado. Tenía tres cables que salen y que marcado que puede ser que tiene alguna forma de controlar su vel
Péndulo magnético (con sensor de efecto hall)

Péndulo magnético (con sensor de efecto hall)

Construye este simple Péndulo magnético con muy pocos componentes. Sensor de efecto Hall se usa para detectar la presencia del campo magnéticoy "empujar" el péndulo en el momento exacto. Electroimán es "ON" durante sólo 20 MS y dren de
Sensor de efecto Hall - NI Multisim

Sensor de efecto Hall - NI Multisim

Construir un interruptor magnético con un sensor de efecto Hall en Multisim. 5 a 10 minutos novato especial!Un sensor de efecto Hall es un transductor que varía su tensión de salida en respuesta a un campo magnético. Sensores de efecto Hall son usado
Simplificado de medición de corriente CA Arduino usando el Sensor de efecto Hall ACS712

Simplificado de medición de corriente CA Arduino usando el Sensor de efecto Hall ACS712

Este es un simplificado enfoque mi Instructable previo con respecto a la corriente con el sensor de corriente ACS712 medición AC... enlaceSimplificaciones son:Eliminando el especial circuito de acondicionamiento de señal - en lugar de ello vamos a ut
Cómo medida actual de AC usando el Sensor de efecto Hall con Arduino u otros microcontroladores comunes

Cómo medida actual de AC usando el Sensor de efecto Hall con Arduino u otros microcontroladores comunes

Un nuevo enfoque más simple consulte aquíObjetivo: Este Instructable muestra cómo hacer una caja de interfaz que, al empalmar un cable de extensión, permite a los microcontroladores comunes como Arduino a medida AC actual como una señal de voltaje DC
Identificador del polo magnético de efecto Hall

Identificador del polo magnético de efecto Hall

Vi un polo magnético detector en un sitio web de imán por $17, y que parecía bastante extrema y sobre-diseñados, así que construí mis propio, piezas suministradas a través de mi propia tecnología y empresa, Vadien. También compiló un kit incluyendo t
Como Sensor contador de vueltas para una devanadera de bobina de bloqueo Interruptor de efecto Hall

Como Sensor contador de vueltas para una devanadera de bobina de bloqueo Interruptor de efecto Hall

imanes en una cosa de spinning cerca de un efecto de sala enganche pulsos de interruptor chip hace que cuenta con un contador para contar las vueltas lo hilado hecho girar.¿Paso 1: Bloqueo Interruptor de Hall? Lo siento, esto no es un muy completo in