Libos de electronica

Placa de evaluación HCS908QG8

plc fpx30

Plaqueta de evaluación para MC68HC908QG8. Posee salida de BDM para conectar cualquier procesador de la familia HCS. Se conecta a la PC mediante USB.
Posee leds, pulsadores, potenciometro, etc para pruebas y evaluaciones.


Etapa de Potencia y Control para Motores Paso a Paso

Motores paso a paso

Plaqueta para el control de motor paso a paso con L297 y L298.
Para motores bipolares o unipolares, además permite la operación en ambos sentidos de giro del motor. Maneja una tensión máxima de 46 V y hasta 4 Amp.


Sensores Reflectivos
Sensores Inductivos

sensores reflectivos

Esta serie presenta un estándar en el proceso de miniaturización de fotocélulas. Posee una amplia gama de 17 formas diferentes, ahorra espacio y puede ser instalado fácilmente según las condiciones de trabajo. La serie PM está disponible tanto en tipos con cable como con conector. Todos los modelos están equipados con dos salidas independientes de operación luz/oscuridad.

Como utilizar un Display LCD con solo tres lineas de I/O del HC908.

Circuito Esquematico Lcd para HC908

Breve descripción de funcionamiento

Este circuito es apto para el 90% de las aplicaciones con lcd excepto aquellas que necesiten de un muestreo rápido de datos. Es de mucha utilidad cuando el procesador no dispone de suficientes lineas de entrada-salida y no es generalmente necesario con procesadores grandes como los HC908GP32, HC908AP64, etc.

Observe el circuito; un HC908QY4 es el corazón de todo esto. Utilizamos los pines PTB0, PTB1 y PTB2 para controlar y mostrar textos en el LCD. Esto nos lleva a un CD4094 (shift regiter - convertidor de serie a paralelo) que nos va a proporcionar el bus de datos hacia el display LCD

En el CD4094 los datos son sicronizados en el flanco ascendente y en display LCD los va a tomar en el flanco descendente nos hace ver que esta señal puede ser compartida.

Bien, entonces en el flanco creciente el CD4094 transfiere el dato del nuevo byte hacia fuera y en el flanco de caída el display LCD lo lee. Tengamos en cuenta que con este método no podemos leer información del display LCD (Opinión personal: es totalmente innecesario).

Ahora viene la parte más dura: Como separar textos de comandos. El LCD tiene un pin para esto: el pin RS. Cuando este esta en 0 son aceptados comandos, cuando esta en uno es aceptado texto (caracteres ASCII). ¿Como se resuelve esto?

Antes de enviar un character al CD4094 inicializo un timer en 500uSec. El resistor R1 va a cargar el capacitor C5. Luego envío el carácter al CD4094 tan rápido como sea posible. De esta forma el capacitor simplemente no tiene el tiempo suficiente como para descargarse. El display LDC lo aceptará como texto. Para comando es lo mismo, solo en sentido contrario. El capacitor se tiene que descargar.

T1 forma un seguidor por emisor para proteger la red R/C. La razón de esto es que la entrada RS del LCD es una entrada TTL y debemos acondicionar adecuadamente la señal para que trabaje correctamente.

#include <hidef.h> 
#include "derivative.h" 

#define LINE1    0x80
#define LINE2    0xC0

#define DTASHT   0x01     // PTA0
#define CLKSHT   0x02     // PTA1
#define STBSHT   0x04     // PTA2

#define CTRL     1
#define DATA     0

void Shift(char, char);
void Delay(int);
void Write(char, char*);
void Init_Dsp(void);

void main(void) {

   CONFIG1 = 0x01;
   CONFIG2 = 0x00; 
   
   DDRA    = 0x07;
   PTA     = 0x00;

   Init_Dsp();
   
   for(;;) {
      Init_Dsp();
      Write(LINE1,"  Hola Mundo    ");
   } 
}

//=====================================

void Init_Dsp(void) {
   PTA |= CLKSHT;
   Shift(CTRL,0x06); 
   Shift(CTRL,0x0E); 
   Shift(CTRL,0x38); 
   Shift(CTRL,0x80); 
   Shift(CTRL,0x0C);     // Cursor off
   Shift(CTRL,0x01);     // Clear Display
}


void Write(char pos, char *text) {
   Shift(CTRL,pos);
   while(*text) Shift(DATA,*text++);
}


void Shift(char donde, char dato) {
int i;
  
   for(i=0; i<8; i++){
     if(dato & 0x80) PTA |=  DTASHT;
     else            PTA &= ~DTASHT;

     if(donde) {
       PTA &= ~CLKSHT;
       Delay(200);
       PTA |=  CLKSHT;
     }
     else {
       PTA &= ~CLKSHT;
       PTA |=  CLKSHT;
     }  
     dato <<= 1;
   }
   PTA |=  STBSHT;
   PTA &= ~STBSHT;
   if(donde) Delay(2000);
}


void Delay(int time) {
   for(; time>0; time--);
}   

                                    

Busca lo que necesitas

sensores, plc, servos, microcontroladores
Google