Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

21/10/2017 #1


Leer el rango de un potenciómetro con Arduino
Hola, amigos. ¿Alguien me puede ayudar en esto?
Tengo el siguiente problema:
Quiero a este programa poner las condiciones de que cuando el potenciómetro esté
en cero, los pulsos de led2 sean de 30 veces por minuto y a medida que vaya subiendo el valor del potenciómetro, vaya subiendo las repeticiones hasta un máximo de 6000 veces por minuto cuando esté al máximo el potenciómetro.

¿Dónde debo poner las condiciones, o este programa no me sirve?
De antemano, les agradezco la ayuda.
Código PHP:
int potPin A0;     // Pin de entrada para el potenciómetro 

int led2Pin 13;    // Pin de salida para el LED
void setup() { 

   
pinMode(led2PinOUTPUT);   // Declara el pin del LED como de salida

void loop()

 {
  for ( 
int i ;  &lt20 i++) 
{   

   
digitalWrite(led2PinLOW);  // Enciende el LED  
   
delay(analogRead(potPin)/5);   // Lee el valor del potenciómetro 

    
digitalWrite(led2PinHIGH);  // Enciende el LED  
   
delay(analogRead(potPin)/5);    



delay(10);

21/10/2017 #2

Avatar de pandacba

tenes que comparar la lectura con los valores que queres, if potpin=0.... las intrucciones para que el led parpadee 2 veces por segundo, tenes que establecer cuantos pasos queres entre el mínimo y el máximo, y a medida que los vaya alcanzando, varie la velocidad de parpadeo
21/10/2017 #3


¿Se pueden poner sólo las condiciones mínimas y la máxima y que dentro de ese rango vaya variando solo sin poner cada una?

---------- Actualizado después de 8 minutos ----------

¿Se podrá poner que en cero el potenciómetro, la salida sean 30 pulsos por minuto y al máximo el potenciómetro, los pulsos sean máximo 6000 pulsos por minuto?
21/10/2017 #4

Avatar de pandacba

tenes que definir el rango en cuantos pasos lo vas a dividir, mostarlo en un led como parpadea no tiene mucho sentido.
Si no definis los pasos no hay forma que el valor de parpadeo varie.
Suponete que lo dividis en 10 pasos, cada 600 pulsos habra una variación, si lo dividis en 100 lo hara cada 60.
Vos tenes un potenciometro que varia entre 0 y 5, si usas un rango de 10, cada 500mv habra un aumento de 600 pulsos, si lo dividis en 100 cada 50mV habra un aumento de 60.

A lo mejor hay otra forma más sencilla, deberías describir que es lo que queres hacer y para que es
22/10/2017 #5

Avatar de JoaquinFerrero

Puedes usar la función map() para que ella te haga la conversión, y así el resultado se lo das a delay().

map(value, fromLow, fromHigh, toLow, toHigh)
https://www.arduino.cc/en/Reference/Map

En value pones el valor devuelto por el potenciómetro. En fromLow y fromHigh pones los valores mínimo y máximo que el potenciómetro te va a devolver. Y en toLow y toHigh, pones el rango de valores que quieres obtener.

En tu caso, serían 500 para toLow y 10 para toHigh.

Quedaría algo así:

Código PHP:
int pot;

void loop() {
   
pot mapanalogRead(potPin), 0102350010 )
   
   
digitalWrite(led2PinLOW);  // Enciende el LED  
   
delay(pot);

   
digitalWrite(led2PinHIGH);  // Apaga el LED  
   
delay(pot);

Fíjate que el potenciómetro lo leemos una vez, y así evitamos acumular más retraso en el código (la llamada a cada analogRead() provoca un retraso de 100 µs).

Este mismo razonamiento lo puedes aplicar a salidas PWM, pero no creo que puedas aplicarlo a este problema en concreto (hacer que parpadee cada 500 ms). Repasa la documentación de analogWrite() https://www.arduino.cc/en/Reference/AnalogWrite
23/10/2017 #6


quiero simular a las rpm de un auto


la señal amarilla de la foto que adjunto es la que quiero sacar pero con 30 pulsos y una pausa de apadado de dos pulsos en la posicion minima de potenciometro

---------- Actualizado después de 3 minutos ----------

la idea es poner esta senal en una memoria de carro y simularlo que esta enviando las señal el motor del auto y poder ver si funciona ...
Imágenes Adjuntas
Tipo de Archivo: jpg dpo3000 2.jpg (40,8 KB (Kilobytes), 13 visitas)
23/10/2017 #7

Avatar de pandacba

Vos queres simular la polea dentada del motor? si es asi hay que hacerlo de otra forma
Si es así deberian ser 60 pulsos menos 2 para la marca de referencia.
Siempre son esa cantidad de pulsos lo que varía es cuantas veces por minuto se producen un tren completo.
60pulsos son 1RPM la velocidad de ralentí de un auto son 600RPM por lo tanto 600x60=36000 pulsos y cada 1000 RPM tenes 60.000 pulsos por minuto visto de otra forma son 600Hz para 600RPM y 1Khz para cada 1000RPM
El sensor debe recibir esa cantidad de pulsos para que la ECU funcione bien

Arduino trae un ejemplo de un motor paso a paso, que por un lado se fijan los pasos y por otro se varia la velocidad con un potenciometro.

Pero recuerda si lo quieres aplicar a un carro si cuando baje de las 600RPM el motor se detiene.
Para llevarlo a cabo tendras que definir un tiempo T1 que es la duración de un pulso tedras que enviar 58 T pulsos + 2T los primeros tendran un valor alto, los últimos 2 un valor bajo y repetir.
Tu potenciometro ahora definira el tiempo T de cada pulso el valor mínimo de Tmax debe estar acorde para 600 RPM, y Tmin para las máximas RPM que desees simular.
25/10/2017 #8


¿Este programa me sirve para lo que deseo hacer, o estoy más perdido que al inicio?
Código PHP:
int pot;
int potPin A0;     // Pin de entrada para el potenciómetro 
int led2Pin 13;    // Pin de salida para el LED

void setup() 

 
pinMode(led2PinOUTPUT);   // Declara el pin del LED como de salida



void loop() 
{
 
pot mapanalogRead(potPin),01023150);

   
digitalWrite(led2PinLOW);  // Enciende el LED  
   
delay(pot);

 
digitalWrite(led2PinHIGH);  // Apaga el LED  
  
 
delay(pot);

---------- Actualizado después de 12 minutos ----------

Aquí le puedo dar los pulsos positivos pero los negativos le meto cabeza y no sé dónde poner el delay.
N
o soy experto en arduino, disculpen mi curiosidad.

---------- Actualizado después de 2 minutos ----------

Exactamente lo que dice el amigo pandacba, es lo que necesito pero no sé por dónde iniciar.
nme un empujón.
26/10/2017 #9

Avatar de pandacba

Ten un poco de paciencia...
Mientras pensalo así, no significa que asi deba quedar, es solo para que entiendas como debería ser aproximadamente, un contador que cuente hasta 60 y empiece de nuevo, pero que con la particularidad, que cuando llegue el puslo 59 y 60 tensa las salidas bajas,
eso por un lado, una variale asociada al potenciometro que servira para indicar cunto dura cada pulso...

lee un poco de estohttps://playground.arduino.cc/Arduin...cion/Appendix3
26/10/2017 #10


en pwm


void loop() {
analogWrite(digPin,127); // Señal PWM a 50% en el PIN 10
}

osea esta parte la salida sera 490hz/2 aproximadamente eso es como entiendo es as?
27/10/2017 #11

Avatar de pandacba

Siendo T el tiempo total de un pulso, T1 sera el tiempo bajo y T2 el tiempo alto, por tanto T=T1 + T2.
Sabemos que son 600RPM eso implica que la rueda dara 10 vueltas segundo y si tenemos 60 pulsos por cada vuelta nos dara 600 pulsos por segundo es decir por lo tanto T sera=1/600=0.00016s.
este sera el tiempo minimo.
Ahora calcula el tiempo para 1000RPM y para unos 4000RPM
29/10/2017 #12


ya lo calculo??
Hace 4 Semanas #13


1/600=0.0016s NO ES 0.00016s
1/1000=0.001s
1/4000=0.00025 s
1/6000=1.66 este seria el tiempo maximo de pulsos y a esto poco lo ocupo con
map de arduino
Hace 4 Semanas #14

Avatar de pandacba

asi es, luego calculas tu tiempo mínimo para las máximas revoluciones, yo te puse 4000 RPM solo a modo de ejemplo
Hace 4 Semanas #15


ya esta el tiempo ahora como lo transmito al lenjuage de arduino
Hace 4 Semanas #16


donde pongo esos valores estimados como inicio esto...gracias por su ayuda
Hace 1 Semana #17


se perdieron alguien que acolite
Hace 1 Semana #18
Moderador general

Avatar de Fogonazo

NEON USA dijo: Ver Mensaje
se perdieron alguien que acolite
Hace 1 Semana #19
Moderador

Avatar de D@rkbytes

NEON USA dijo: Ver Mensaje
se perdieron alguien que acolite
Mmm. Tal vez, este:

Hace 4 Días #20


jajajaj buena buena
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Arduino y Raspberry Pi

Cerrar
Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.