Problema serial

Hola a todos:

Estoy desarrollando un codigo que permite leer una trama serial que ingresa por Tx en el arduino UNO.

El programa funciona perfectamente si está conectado al pc por medio del cable usb , pero cuando lo desconecto y lo alimento por fuente externa no funciona.

Estoy leyendo una trama que viene de un sensor de radiacion el cual tiene un puerto serial que solo cuenta con Tx más no con Rx. sospecho que por esta razón el programa no funcione de forma autonoma.

El equipo esta siendo alimentado por una fuente de 12V a 60W, no sospecho de problemas de alimentación.

Muchas gracias por cualquier ayuda que me puedan brindar

mmmmmmm. ni idea.

que aprate le posistes al arduino ?, este se alimenta de donde ?, has conectados todos las masas, onegativos ?

Todas las masas estan conectadas, aparte del arduino , tengo otros equipos que estan funcionando bien. Cuando el arduino esta por USB el programa corre sin problema, pero al dejarlo autonomo no funciona.

¿Cómo alimentas el arduino? ¿Por el conector jack de alimentación de al lado del USB? ¿Qué voltaje de alimentación usas?

Si, yo creo que es lo que indica carmeloco, o no lo conectas por el conector externo o estas usando el pin de 5V cuando debes usar VIN. y al menos 7V de entrada o sino no funciona.

Estoy utilizando el pin e 5V para alimentar otro circuito , puede ser ese el problema?

Estoy usando una fuente externa de 12V 60W

Gracias

Que circuito usas conectado a los 5V? Cuanto consume?

Estoy conectando un pulsador con una resistencia de 330 a 1/4 W.

Ya intente desconectando todo y dejando solo los cables de Rx en el arduino y GND y tampoco funciona :frowning:

Un pulsador con una R no es problema. 330 ohms para una R es demasiado bajo pero no es responsable de tu problema.
Lo que me sorprende es que funciona con USB y luego deja de hacerlo por alimentación externa.

Como creo que lo conectas al conector externo o a Vin, ese no puede ser el problema y la verdad no se que puede ser.
No hay mucho. Porque no mides la tensión en 5V a ver si son 5V cuando estas alimentando con tu fuente de 12V.

Gracias por tu respuesta surbyte. Creo que el problema es que el equipo que estoy conectando al arduino solo se conecta al Rx mas no al Tx, sospecho que el Serial.available solo funciona si Tx y Rx estan conectados, pero no encuentro informacion al respecto.

Alguien conoce a profundidad el funcionamiento del comando serial.available? si necesito conectar los Tx y Rx para que funcione? Hay alguna linea que pueda reemplazar el comando para poder hacer pruebas?

Gracias!!

A ver. Serial.available() devuelve el valor de bytes disponibles en el buffer, o sea que habla de recepción o RX, RX desde el punto de vista del arduino o sea el enviado por tu equipo.
No te funciona?

El funciona perfectamente pero solo al estar conectado al PC Via USB, cuando trato de correr el programa con fuente externa no funciona , tengo un testigo en el pin 13 para verificar cuando el programa esta leyendo info pero nunca ingresa. Adjunto el codigo que estoy usando.

 char array[14] = { 'w', 'w', 'w', 'w', 'w', 'w', 'w', 'w', 'w', 'w', 'w', 'w', 'w', 'w'};
char lectura [6] ;
char average [6] ;
String numero;
float lecturafloat = 0;
float averagefloat = 0; // medida de radiacion 
float medicion = 0;
float promedio = 0; // promedio de radiacion ambiente sin fuente
float numerofloat =0;
int contador = 0;
int valapertura = 0;  // variable para guardar el estado de apertura
const int testigo = 13; // led de prueba
const int fuente = 2; // indicador de fuente en caja
const int apertura = 3;
const int tamper = 8;


void setup() {
  
  Serial.begin(2400);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(8, INPUT);
  pinMode(13, OUTPUT);
  Serial.write ("inicio");
}

void loop() {

    if (Serial.available() ==14) // CALIBRACION DE LA RADIACION AMBIENTE 
    {
      digitalWrite(testigo, HIGH); // calibrando
      
      for ( int i = 0; i < 14; i++)
      {
        array[i] = Serial.read();
      }
    
      numero = String(array[0]);
      numero += String(array[1]);
      numero += String(array[2]);
      numero += String(array[3]);
      numero += String(array[4]);
      numero += String(array[5]);
      
      numerofloat = numero.toFloat();
      Serial.println(numerofloat);
    
      if (contador <10){
        contador++; 
        promedio = numerofloat + promedio; 
      
        Serial.print(contador);
        Serial.print(" / ");
        Serial.print(numerofloat);
        Serial.print(" / ");
        Serial.println(promedio);
      
      if (contador == 10){
        promedio = (promedio/10);
        Serial.print ("el promedio es : ");
        Serial.println (promedio);        
      }      
    }else{
    
      digitalWrite(testigo, LOW); // modo medicion
      Serial.print("Medicion actual: ");
      Serial.print(numerofloat);
      Serial.print(" / ");     
      Serial.print("Promedio base: ");
      Serial.println(promedio);
      
      if (numerofloat > promedio) {
        digitalWrite(fuente, HIGH); // la fuente esta en el carro
      }else {
        digitalWrite(fuente, LOW); // la fuente fue retirada del carro    
      }      
    }
    valapertura = digitalRead (tamper);
    digitalWrite (apertura, valapertura);
  }

}

Por favor, edita ese ultimo post y usa los tags [.code]código aca[./code] sin los ptos decimales. Lee las normas del foro si no lo comprendes.

Fuente externa conectada en el conector externo, minimo 7V, si le conectas 5V no va funcionar.
NO conectes nada a 5V, eso es una salida del regulador del arduino.
Si usas el conector del arduino coneca a Vin y de nuevo mínimo 7V DC. No olvides GND o negativo.

Gracias surbyte.

Desconecte todo y deje solo los cables de Rx y GND conectado y no funciona. Si lo conecto al PC con el monitor serial si funciona.

El voltaje de entrada es de 12VDC a 60W.

mu facil tu problema, creo.
el problema es que tu dices funciona bien con usb, pero con el extrno no punciona.
me esplico, cuando pones el usb, y habre la terminal serial ahi funciona, porque habrs la terminal y mandas carateres que cunple con tu condicion, y el otro caso solo le das energia o no habres el la terminal.

entoces por eso no te funciona.

if (Serial.available() ==14) // CALIBRACION DE LA RADIACION AMBIENTE
{
digitalWrite(testigo, HIGH); // calibrando

ese if, no se llena poruqe no habres y no mandas ningun caracter

No seran los baudios, note que lo pusiste a 2400...generalmente se usa 9600 en las comunicaciones de RX Y TX.

Estoy desarrollando un codigo que permite leer una trama serial que ingresa por Tx en el arduino UNO.

Bueno recién me percato de esto. La trama que viene del equipo debe ingresar por el RX del UNO
Ojooo con eso.

Aunque acá no tienes las dos conexiones sino una. supongamos izq tu arduino y derecha tu equipo.
Entonces tu equipo solo tiene TX y el arduino solo usará RX del equipo.
Por eso con el USB como bien dijo Naruto, funcionaba y luego no.

El otro cable no lo tiene porque tu no le transmites por TX nada al equipo que si tuviera recibiría por RX

Se comprende.
Cambia en el Arduino el cable de TX a RX y verás que funciona.

Hola Naruto y Surbyte:

El programa funciona sin abrir el terminal serial , solo es necesario alimentar la tarjeta por el puerto usb. Les explico ,las pruebas que hice:

Conecte una fuente externa de 5VDC y no funciono
Conecte una fuente externa de 7.5 VDC y no funciono
Conecte una fuente externa de 12VDC y no funciono
Tomé un computador sin arduino instalado y conecte el cable serial y alimente la placa y el programa corrió perfectamente.
Después tome una power bank usb como el que muestro en la foto y el programa funciono perfectamente

http://www.dealssy.com/bazar/wp-content/uploads/2015/01/power-bank.jpg

Al medir el voltaje de entrada , concuerda con el de una fuente de 5VDC, entonces no hay diferencia con la fuente externa, la diferencia es el puerto por el que ingresa el voltaje.

Como mencione anteriormente , si cargo un programa que no tenga comunicación serial , funciona bien con fuente externa, como por ejemplo el blink, o cualquier otro programa.

Aun no entiendo que pasa pero el power bank me sirve como batería de respaldo en caso de algún corte de energia. Espero que alguien nos pueda ayudar a entender esta situación.

Gracias

Por favor, alimenta con fuente externa mayor a 7V y mide la salida de 5V del arduino en el conector.
Y me dices cuanto lees?