velocidad – Sonrobots https://sonrobots.com Robots para ti Thu, 18 May 2023 01:23:13 +0000 es hourly 1 https://wordpress.org/?v=6.5.3 https://sonrobots.com/wp-content/uploads/2021/01/cropped-DSC_0288-1-32x32.jpg velocidad – Sonrobots https://sonrobots.com 32 32 39789093 ITR9606 Sensor de velocidad encoder sin módulo https://sonrobots.com/producto/itr9606-sensor-de-velocidad-encoder-sin-modulo/ https://sonrobots.com/producto/itr9606-sensor-de-velocidad-encoder-sin-modulo/#respond Thu, 18 May 2023 01:19:08 +0000 https://sonrobots.com/?post_type=product&p=6321 Optoacoplador encoder fotoeléctrico

En módulo FC-03

Sin módulo ITR9606

Conocer la posición o velocidad de un motor es muy importante en robótica, para lo cual existen diversas alternativas, siendo una de las más comunes el uso de encoders de tipo óptico. Los encoders en general son dispositivos que se encargan de convertir el movimiento angular o lineal en pulsos eléctricos que puedan ser interpretados por el controlador del sistema. Los encoders incrementales ópticos realizan la medición de movimiento con el uso de un haz de luz infrarrojo que se ve interrumpido por las ranuras de un disco acoplado al eje. La cantidad de ranuras por vuelta determinará la precisión del encoder.

Este sensor para encoder óptico utiliza el opto interruptor infrarrojo MOCH22A. El Dispositivo MOCH22A cuenta con dos partes: Un emisor IR y un receptor o sensor IR. Entre el emisor y receptor IR existe un espacio para el objeto que bloqueará el paso de luz (disco ranurado). Los pulsos son digitalizados por un opamp LM393 en modo comparador entregando pulsos TTL que pueden ser interpretados por un microcontrolador como Arduino o Pic. Se recomienda utilizar interrupciones por flancos de subida/bajada para detectar los pulsos. En Arduino Uno los pines de interrupción por flanco son: 2 y 3. Se recomienda agregar un capacitor de 100nF entre la linea de salida D0 y tierra a modo de filtro pasa bajo y así evitar falsos disparos en la interrupción. Otra recomendación es alimentar el módulo con 3.3V.

Este modelo de encoder ha sido diseñado para trabajar con plataformas de robótica móvil: seguidores de línea, sumos, laberinto. También son utilizados en contadores de RPM (Revoluciones por minuto) en motores DC/AC o como sensor de final de carrera.

Tipo de emisor: Fotodiodo IR
Tipo de detector: fototransistor

int encoder_pin = 2;             //Pin 2, donde se conecta el encoder
unsigned int rpm = 0;           // Revoluciones por minuto calculadas.
float velocity = 0;                 //Velocidad en [Km/h]
volatile byte pulses = 0;       // Número de pulsos leidos por el Arduino en un segundo
unsigned long timeold = 0;  // Tiempo
unsigned int pulsesperturn = 20; // Número de muescas que tiene el disco del encoder.
const int wheel_diameter = 64;   // Diámetro de la rueda pequeña[mm]
static volatile unsigned long debounce = 0; // Tiempo del rebote.
void setup(){
   Serial.begin(9600); // Configuración del puerto serie
   pinMode(encoder_pin, INPUT); // Configuración del pin nº2
   attachInterrupt(0, counter, RISING); // Configuración de la interrupción 0, donde esta conectado.
   pulses = 0;
   rpm = 0;
   timeold = 0;
  Serial.print(“Seconds “);
  Serial.print(“RPM “);
  Serial.print(“Pulses “);
  Serial.println(“Velocity[Km/h]”);}
 void loop(){
   if (millis() – timeold >= 1000){  // Se actualiza cada segundo
      noInterrupts(); //Don’t process interrupts during calculations // Desconectamos la interrupción para que no actué en esta parte del programa.
      rpm = (60 * 1000 / pulsesperturn )/ (millis() – timeold)* pulses; // Calculamos las revoluciones por minuto
      velocity = rpm * 3.1416 * wheel_diameter * 60 / 1000000; // Cálculo de la velocidad en [Km/h]
      timeold = millis(); // Almacenamos el tiempo actual.
      Serial.print(millis()/1000); Serial.print(”       “);// Se envia al puerto serie el valor de tiempo, de las rpm y los pulsos.
      Serial.print(rpm,DEC); Serial.print(”   “);
      Serial.print(pulses,DEC); Serial.print(”     “);
      Serial.println(velocity,2);
      pulses = 0;  // Inicializamos los pulsos.
      interrupts(); // Restart the interrupt processing // Reiniciamos la interrupción
   }
  }
//Función que cuenta los pulsos buenos
 void counter(){
  if(  digitalRead (encoder_pin) && (micros()-debounce > 500) && digitalRead (encoder_pin) ) {
// Vuelve a comprobar que el encoder envia una señal buena y luego comprueba que el tiempo es superior a 1000 microsegundos y vuelve a comprobar que la señal es correcta.
        debounce = micros(); // Almacena el tiempo para comprobar que no contamos el rebote que hay en la señal.
        pulses++;}  // Suma el pulso bueno que entra.
        else ; }

 

]]>
https://sonrobots.com/producto/itr9606-sensor-de-velocidad-encoder-sin-modulo/feed/ 0 6321
ITR9606 Sensor de velocidad encoder en módulo https://sonrobots.com/producto/optoacoplador-encoder-fotoelectrico/ https://sonrobots.com/producto/optoacoplador-encoder-fotoelectrico/#respond Sat, 02 Jan 2021 21:09:29 +0000 https://sonrobots.com/producto/optoacoplador-encoder-fotoelectrico/ Optoacoplador encoder fotoeléctrico

En módulo FC-03

Sin módulo ITR9606

Conocer la posición o velocidad de un motor es muy importante en robótica, para lo cual existen diversas alternativas, siendo una de las más comunes el uso de encoders de tipo óptico. Los encoders en general son dispositivos que se encargan de convertir el movimiento angular o lineal en pulsos eléctricos que puedan ser interpretados por el controlador del sistema. Los encoders incrementales ópticos realizan la medición de movimiento con el uso de un haz de luz infrarrojo que se ve interrumpido por las ranuras de un disco acoplado al eje. La cantidad de ranuras por vuelta determinará la precisión del encoder.

Este sensor para encoder óptico utiliza el opto interruptor infrarrojo MOCH22A. El Dispositivo MOCH22A cuenta con dos partes: Un emisor IR y un receptor o sensor IR. Entre el emisor y receptor IR existe un espacio para el objeto que bloqueará el paso de luz (disco ranurado). Los pulsos son digitalizados por un opamp LM393 en modo comparador entregando pulsos TTL que pueden ser interpretados por un microcontrolador como Arduino o Pic. Se recomienda utilizar interrupciones por flancos de subida/bajada para detectar los pulsos. En Arduino Uno los pines de interrupción por flanco son: 2 y 3. Se recomienda agregar un capacitor de 100nF entre la linea de salida D0 y tierra a modo de filtro pasa bajo y así evitar falsos disparos en la interrupción. Otra recomendación es alimentar el módulo con 3.3V.

Este modelo de encoder ha sido diseñado para trabajar con plataformas de robótica móvil: seguidores de línea, sumos, laberinto. También son utilizados en contadores de RPM (Revoluciones por minuto) en motores DC/AC o como sensor de final de carrera.

Voltaje de Operación: 3.3V – 5V DC
Salidas: Analogica y Digital TTL
Sensor: MOCH22A
Modelo Placa: FC-03 / FZ0888
Tipo de emisor: Fotodiodo IR
Tipo de detector: fototransistor
Longitud de onda del emisor: 950 nm (infrarrojo)
Peso: 8 gramos
Dimensiones: 3.2*1.4*0.7 cm
Ranura de 5mm
Comparador Opamp: LM393
Led indicador de alimentación
Led indicador de pulso
Salida TTL ON: Sensor bloqueado
Salida TTL OFF: Sensor sin bloquear

Partes que conforman el encoder FC-03

Código

int encoder_pin = 2;             //Pin 2, donde se conecta el encoder
unsigned int rpm = 0;           // Revoluciones por minuto calculadas.
float velocity = 0;                 //Velocidad en [Km/h]
volatile byte pulses = 0;       // Número de pulsos leidos por el Arduino en un segundo
unsigned long timeold = 0;  // Tiempo
unsigned int pulsesperturn = 20; // Número de muescas que tiene el disco del encoder.
const int wheel_diameter = 64;   // Diámetro de la rueda pequeña[mm]
static volatile unsigned long debounce = 0; // Tiempo del rebote.
void setup(){
   Serial.begin(9600); // Configuración del puerto serie
   pinMode(encoder_pin, INPUT); // Configuración del pin nº2
   attachInterrupt(0, counter, RISING); // Configuración de la interrupción 0, donde esta conectado.
   pulses = 0;
   rpm = 0;
   timeold = 0;
  Serial.print(“Seconds “);
  Serial.print(“RPM “);
  Serial.print(“Pulses “);
  Serial.println(“Velocity[Km/h]”);}
 void loop(){
   if (millis() – timeold >= 1000){  // Se actualiza cada segundo
      noInterrupts(); //Don’t process interrupts during calculations // Desconectamos la interrupción para que no actué en esta parte del programa.
      rpm = (60 * 1000 / pulsesperturn )/ (millis() – timeold)* pulses; // Calculamos las revoluciones por minuto
      velocity = rpm * 3.1416 * wheel_diameter * 60 / 1000000; // Cálculo de la velocidad en [Km/h]
      timeold = millis(); // Almacenamos el tiempo actual.
      Serial.print(millis()/1000); Serial.print(”       “);// Se envia al puerto serie el valor de tiempo, de las rpm y los pulsos.
      Serial.print(rpm,DEC); Serial.print(”   “);
      Serial.print(pulses,DEC); Serial.print(”     “);
      Serial.println(velocity,2);
      pulses = 0;  // Inicializamos los pulsos.
      interrupts(); // Restart the interrupt processing // Reiniciamos la interrupción
   }
  }
//Función que cuenta los pulsos buenos
 void counter(){
  if(  digitalRead (encoder_pin) && (micros()-debounce > 500) && digitalRead (encoder_pin) ) {
// Vuelve a comprobar que el encoder envia una señal buena y luego comprueba que el tiempo es superior a 1000 microsegundos y vuelve a comprobar que la señal es correcta.
        debounce = micros(); // Almacena el tiempo para comprobar que no contamos el rebote que hay en la señal.
        pulses++;}  // Suma el pulso bueno que entra.
        else ; }

Diagrama

ENCODER

 

]]>
https://sonrobots.com/producto/optoacoplador-encoder-fotoelectrico/feed/ 0 1519
Disco para Velocidad Codificador Encoder https://sonrobots.com/producto/disco-para-velocidad-codificador-encoder/ https://sonrobots.com/producto/disco-para-velocidad-codificador-encoder/#respond Sat, 02 Jan 2021 21:09:28 +0000 https://sonrobots.com/producto/disco-para-velocidad-codificador-encoder/ Disco ranurado para medir velocidad de giro en motores

]]>
https://sonrobots.com/producto/disco-para-velocidad-codificador-encoder/feed/ 0 1518