Mikroc
Mikroc
Mikroc
Qu es Electrnica?
Es el campo de la ingeniera y de la
fsica aplicada que estudia el diseo y
fabricacin de los circuitos y dispositivos
electrnicos, a travs de la electrnica
es posible procesar y medir seales para
luego realizar acciones en el mundo.
De que le sirve saber a uno que
sustantivo es la palabra que como el
congreso agrupa animales y cosas.
RS232
Contador Arquitectura
// Declaracin de las constantes para el display.
const unsigned short DIGITOS[] =
{
0x3F, //Cdigo del dgito 0
0x06, //Cdigo del dgito 1
0x5B, //Cdigo del dgito 2
0x4F, //Cdigo del dgito 3
0x66, //Cdigo del dgito 4
0x6D, //Cdigo del dgito 5
0x7D, //Cdigo del dgito 6
0x07, //Cdigo del dgito 7
0x7F, //Cdigo del dgito 8
0x6F, //Cdigo del dgito 9
};
//Funcin para visualizar el display dinmico.
void VerDisplay( int Numero )
{
unsigned short U; //Variable para guardar las unidades.
unsigned short D; //Variable para guardar las decenas.
unsigned short C; //Variable para guardar las centenas.
unsigned short UM; //Variable para guardar las unidades de mil.
UM = Numero/1000; //Clculo de las unidades de mil.
C = (Numero-UM*1000)/100; //Clculo de las centenas.
D = (Numero-UM*1000-C*100)/10; //Clculo de las decenas.
U = (Numero-UM*1000-C*100-D*10); //Clculo de las unidades.
PORTB = DIGITOS[U]; //Visualiza las unidades.
PORTA.F0=1; //Activa en alto el primer display
delay_ms(10); //Retado de 10m segundos
PORTA=0; //Desactiva todos los displays.
PORTB = DIGITOS[D]; //Visualiza las decenas.
PORTA.F1=1; //Activa en alto el segundo display
delay_ms(10); //Retado de 10m segundos
PORTA=0; //Desactiva todos los displays.
PORTB = DIGITOS[C]; //Visualiza las centenas.
PORTA.F2=1; //Activa en alto el tercer display
delay_ms(10); //Retado de 10m segundos
PORTA=0; //Desactiva todos los displays.
PORTB = DIGITOS[UM]; //Visualiza las unidades de mil.
PORTA.F3=1; //Activa en alto el cuarto display
delay_ms(10); //Retado de 10m segundos
PORTA=0; //Desactiva todos los displays.
}
void main ( void )
{
int Numero=0;
TRISB = 128; //Configura el puerto B como salida
PORTB=0;
TRISA = 0; //Configura el puerto A como salida
PORTA = 0; //Se desactiva todos los displays
while( 1 ) //Bucle infinito
{
//Se visualiza el valor de Nmero.
VerDisplay( Numero ); //Est funcin dura aproximadamente 40m segundos.
//Se cuentan 12 incrementos en N para hacer un incremento
//en Nmero aproximadamente cada 500m segundos.
delay_ms(20);
if (Button(&PORTB,7,10,1)) numero++; //Cambio proporcionado el 25/11/2013
//if (RB7_bit==1) numero++;
while(RB7_bit==1);
if (Button(&PORTA,4,10,1)) numero--; //Cambio proporcionado el 25/11/2013
//if (RB7_bit==1) numero++;
while(RA4_bit==1);
if(numero>1000) numero=0;
}
}
*/
MATERIALES
1 pic16f628A
2 74LS04 Not
10 resistencias 330
2 Resistencias 10K
2 Pulsadores
4 Display Ctodo Comn
Sensor de Proximidad
Comunicacin Inalambrica
Cable
Inversor Trigger Schmitt
40106
TRIGGER SCHMITT
RS232
Es
un
protocolo
de
comunicacin antiguo que
maneja niveles de voltaje
en un rango de 12V y
-12V, su objetivo es
transmitir informacin.
Este protocolo establece
que debe existir un bit de
inicio (bit de Start). Un bit
de paridad que puede o
no existir y final mente el
bit de parada.
RS232
Fin
PACKAGE-MANAGER
Esta relacionado con las libreras
tp://www.mikroe.com/package-manager/
Proyectos
http://www.prometec.net/contact/
RELOJ
http://danigommun.wix.com/danielgomez#!reloj/c3t
Librerias arduino
http://playground.arduino.cc/Code/Keypad
Cursos
https://
www.edx.org/course/so-you-want-become-biomedical-enginee
r-ieeex-biomed01x
http://www.mikroe.com/package-manager/
Compras
http://www.gearbest.com/?
gclid=CjwKEAjwq6m3BRCP7IfMq6Oo
9gESJACRc0bNBs-t9Mi2RsFplOb5CX
U2Cq-Mc33e4SAd6jawEh6vXBoC_onw
_wcB
PORTX Y TRISX
Estas instrucciones
configuran
el
estado lgico del
puerto que deseas
utilizar, hay que
tener en cuenta
que si se tienen
mal
configuradas
estas instrucciones
seguramente
el
programa no va a
funcionar
Condicional IF ELSE
ndo se utilice la librera Button, puedo condicionar con cualquier puerto excepto
el bit del puerto que esta configurado mi instruccin
Microcontrolad
ores
Dedicado a la programacin y a la
instrumentacin electrnica. Software
libre
Interrupcin RB0
Microcontroladores
Teclado Hexadecimal
El USART es uno
de los primeros
sistemas
de
comunicacin
serie.
Las
versiones nuevas
de este sistema
estn actualizadas
y se les denomina
un poco diferente
EUSART
El mdulo Transmisor/Receptor Universal Sncrono/Asncrono
mejorado (Enhanced Universal Synchronous Asynchronous Receiver
Transmitter - EUSART) es un perifrico de comunicacin serie de
entrada/salida. Asimismo es conocido como Interfaz de comunicacin
serie (Serial Communications Interface - SCI). Contiene todos los
generadores de seales de reloj, registros de desplazamiento y
bfers de datos necesarios para realizar transmisin de datos serie
de entrada/salida, independientemente de la ejecucin de programa
del dispositivo. Como indica su nombre, aparte de utilizar el reloj
para la sincronizacin, este mdulo puede establecer la conexin
asncrona, lo que lo hace nico para algunas aplicaciones. Por
ejemplo, en caso de que sea difcil o imposible proporcionar canales
especiales para transmisin y recepcin de datos y seales de reloj
(por ejemplo, mando a distancia de radio o infrarrojas), el mdulo
EUSART es definitivamente la mejor opcin posible.
Valor RMS
Valor cuadrtico medio, valor eficaz.
TUBO NIXIE
TUBO NIXIE
Consiste en una vlvula utilizada para
representar visualmente una serie de
smbolos, normalmente las cifras 0 a 9,
punto (o coma), signos ms y menos,
etc.
Algunas
unidades
tambin
representan smbolos especiales, como
dlar, , mA, V, etc.
TECNOLOGA
El tubo nixie est formado por un nodo, que
es una rejilla delante de una serie de ctodos.
Estos tienen la forma del smbolo que se quiere
representar y se sitan apilados tras el nodo,
pero sin contacto galvnico entre ellos. El
conjunto va encerrado en una ampolla de
vidrio llena de gas a baja presin, normalmente
nen. Se iluminan con luz anaranjada, al
ionizarse el gas en las proximidades de los
ctodos. En algunos modelos la ampolla
incorpora un filtro rojo para mejorar la
visualizacin al aumentar el contraste. Dos son
las disposiciones ms comunes:
Decimal: Cada nodo va conectado a una
patilla y se excita independientemente.
Bi-quinario: Los dgitos se dividen en dos
grupos, cada uno de los cuales tiene un nodo
y la mitad de los ctodos. Se reduce el nmero
de patillas ya que cada ctodo de un grupo
comparte la patilla con un ctodo del otro
grupo. Es un tipo de multiplexacin.
CARACTERSTICAS
El modo en que los dgitos de un tubo Nixie se
hallan dispuestos es visible en esta ilustracin
de un ZM1212.
El tubo nixie se comporta como la lmpara de
nen que es. Tienen una tensin de encendido
que suele ser unos 170 V y una tensin de
mantenimiento, bastante ms baja. Debe
utilizarse una resistencia para limitar la
corriente que atraviesa el display. Como el halo
luminoso se produce en los ctodos, el tubo
debe manejarse con corriente continua.
Su peso y volumen.
Necesita una tensin alta.
Los smbolos no estn todos en el mismo
plano, lo que reduce el ngulo de visibilidad.
Son frgiles.
Con la aparicin de los displays
fluorescentes, de LED y, posteriormente, de
cristal lquido, los tubos nixie han cado en
desuso.
Historia
Los primeros displays de tubos Nixie fueron hechos
por un pequeo fabricante de tubos de vaco
llamado Haydu Brothers Laboratorie, y se
introdujeron en 1955 por la Burroughs Corporation,
que adquiri Haydu. El nombre Nixie deriva de "NIX
I" de Burroughs, una abreviatura de "Indicador
Numrico eXperimental n. 1" ( "Numeric Indicator
eXperimental No. 1") aunque puede haber sido un
retroacrnimo diseado para evocar una criatura
mtica. Cientos de variaciones de este diseo fueron
fabricados por muchas empresas, desde la dcada
de 1950 hasta la dcada de 1990.
RESURGIMIENTO
Un gran reloj de seis Nixies ZM1210, manufacturado por Telefunken.
Un reloj-pulsera Nixie en la mueca de Steve Wozniak, cofundador de Apple Inc.
Citando una insatisfaccin con la esttica de los displays digitales modernos y la
atraccin nostlgica por el styling de la tecnologa obsoleta, un buen nmero de
entusiastas de la electrnica ha mostrado en aos recientes inters en resucitar los
tubos Nixie. Los tubos sin vender que han estado almacenados en galpones durante
dcadas estn siendo sacados y usados, siendo la principal aplicacin en relojes
digitales de elaboracin casera. Esto es en cierto modo irnico, pues durante su
auge, los Nixies generalmente eran considerados demasiado costosos para ser
usados en bienes de consumo masivo como los relojes de pared. Este aumento
repentino en la demanda ha causado que los precios se eleven significativamente,
particularmente para los tubos voluminosos. El tubo Nixie ms voluminoso que se
sabe se halla en mano de coleccionistas el RODAN CR47/GR414 (22.1cm de alto)ha
sido vendido a cientos de dlares la unidad pero dichos tubos son extremadamente
raros y solamente hallados en unos pocos lugares del mundo por buscadores
perseverantes y afortunados. Los precios de otros Nixies voluminosos que exhiben
dgitos ms altos de 1 pulgada (2.5 cm) han subido el doble, triple o ms entre 1998
y 2005.
DIAGRAMA DE UN TUBO
NIXIE
Referencias
http://
es.wikipedia.org/wiki/Tubo_Nixie
Fuente
DESCRIPCIN
Los cdigos Manchester tienen una transicin en la mitad del periodo de cada
bit. Cuando se tienen bits iguales y consecutivos se produce una transicin al
inicio del segundo bit, la cual no es tenida en cuenta por el receptor al
momento de decodificar, solo las transiciones separadas uniformemente en el
tiempo son las que son consideradas por el receptor. Hay algunas transiciones
que no ocurren a mitad de bit. Estas transiciones no llevan informacin til, y
solo se usan para colocar la seal en el siguiente estado donde se llevar a
cabo la siguiente transicin. Aunque esto permite a la seal autosincronizarse, en realidad lo que hace es doblar el requerimiento de ancho de
banda, en comparacin con otros cdigos como por ejemplo los Cdigos NRZ.
Diseo de fuente de
voltaje
Comercial
Reguladores
Ecuaciones
CDIGO EN MIKROC
//Definicin de pines del LCD
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D4 at RB0_bit;
//Definicin de los TRIS del LCD
sbit LCD_RS_Direction at
TRISB4_bit;
sbit LCD_EN_Direction at
TRISB5_bit;
sbit LCD_D7_Direction at
TRISB3_bit;
sbit LCD_D6_Direction at
TRISB2_bit;
sbit LCD_D5_Direction at
TRISB1_bit;
sbit LCD_D4_Direction at
TRISB0_bit;
CDIGO EN MIKROC
//Definicin de pines del LCD
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D4 at RB0_bit;
//Definicin de los TRIS del LCD
sbit LCD_RS_Direction at
TRISB4_bit;
sbit LCD_EN_Direction at
TRISB5_bit;
sbit LCD_D7_Direction at
TRISB3_bit;
sbit LCD_D6_Direction at
TRISB2_bit;
sbit LCD_D5_Direction at
TRISB1_bit;
sbit LCD_D4_Direction at
TRISB0_bit;
NOTA SOBRE EL
VOLTMETRO
No se porque el programa
anteriormente me funciono
con
la
ecuacin
DisI
=
(Radc*0.004887585)*10;
Como se muestra en la siguiente figura, un mdulo MSSP representa slo una mitad de un hardware
necesario para establecer una comunicacin serial, mientras que la otra mitad se almacena en el
dispositivo con el que intercambia los datos. Aunque los mdulos en ambas puntas de lnea son los
mismos, sus modos de funcionamiento difieren esencialmente dependiendo de si el mdulo funciona
comoMaestroo comoEsclavo:
Si el microcontrolador a ser programado controla otro dispositivo o circuito (perifricos), deber
funcionar como un dispositivomaestro. Este mdulo generar seal de reloj cuando sea necesario, o
sea slo cuando se requiera recibir y transmitir los datos por software. Por consiguiente, el
establecimiento de conexin depende nicamente del dispositivo maestro.
De lo contrario, si el microcontrolador a ser programado est integrado en un dispositivo ms
complejo (por ejemplo en una PC), deber funcionar como un dispositivo esclavo. Como tal, un esclavo
siempre tiene que esperar a que un dispositivo maestro enve la solicitud de transmisin de datos.
El modo SPI permite la transmisin y recepcin simultnea de datos de 8 bits al utilizar tres
lneas de entrada/salida
SDO-Serial Data Out(salida de datos serie )- lnea de transmisin;
SDI-Serial Data In(entrada de datos serie) - lnea de recepcin; y
SCK-Serial Clock(reloj de comunicacin) - lnea de sincronizacin.
Adicionalmente, hay una cuarta lnea (SS) que se puede utilizar si el microcontrolador
intercambia los datos con varios dispositivos perifricos. Refirase a la siguiente figura.
SS-Slave Select (Seleccin de esclavo)- Es una lnea adicional utilizada para la seleccin de un
dispositivo especfico. Esta lnea est activa slo si el microcontrolador funciona como esclavo, o
sea cuando el dispositivo externo - maestro requiere intercambiar los datos. Al funcionar en
modo SPI, el mdulo MSSP utiliza 4 registros en total:
SSPSTAT - registro de estado
SSPCON - registro de control
SSPBUF - bfer serie de transmisin/recepcin
SSPSR - registro de desplazamiento (no es accesible directamente)
Los primeros tres registros son de lectura/escritura y se pueden modificar en cualquier momento,
mientras que el cuarto, como no es accesible, se utiliza para convertir datos en formato serial.
Caractersticas SPI
Es full dplex.
Matlab
VLAN
Agrupaciones lgicas de puerto,
VLAN ESTATICAS (SEGN EL PUERTO)
y VLAN DINAMICAS (SEGN LA MAC
ADDRESS)
ARDUINO
QU ES ARDUINO?
Es una herramienta de cdigo abierto
que nos permite construir sistemas
electrnicos.
Referencias
http://www.nickeugeny.com/mb/categ
ory/microcontroladores
/
http://www.nickeugeny.com/mb/cate
gory/programas
/
ppoiukjk
Teorema de Norton
Programas en Mikroc
void main()
{
PORTB=0;
TRISB=0;
PORTC=0;
TRISC=255;
while(1)
{
if (Button(&PORTC, 0, 100, 0))
{
if(portb.f3==1)
portb.f3=0;
else
portb.f3=1;
while(Button(&PORTC, 0, 100, 0));
}
}
}
DETECTOR DE METALES
La bobina tiene
aproximadament
e 200 vueltas
con cable de
cobre
esmaltado.
DETECTOR DE METALES
Proyecto
Display de 7
segmentos
atmega328
ATMEGA328
BOOTLOADER
Proyecto Display de 7
segmentos
MODELO IMPLEMENTADO
EN ISIS
int retardo=10;
int var=0;
int unidad=0;
// cuenta las unidades (derecha)
int decena=0;
// cuenta las decenas (izquierda)
int conmutador=0;
// multiplexacion de uno a otro 7 segmentos
int cont=0;
// contador de ciclos de espera para cambiar de numero
void setup() {
pinMode(2, OUTPUT); //seg a
pinMode(3, OUTPUT); //seg b
pinMode(4, OUTPUT); //seg c
pinMode(5, OUTPUT); //seg d
pinMode(6, OUTPUT); //seg e
pinMode(7, OUTPUT); //seg f
pinMode(8, OUTPUT); //seg g
void loop() {
delay(retardo);
cont++;
// incrementa el contador de ciclos en Uno
if (cont==100){
// cada cuanto tiempo (ciclos)cambia un numero
cont=0;
// inicializa el contador de ciclos
unidad=unidad+1;
// incrementa la unidad, primer 7seg
if (unidad >= 10){
// cuando la unidad llegue a 10 incrementa la decena
decena=decena+1;
// incrementa la decena, segundo 7seg
unidad=0;
// regresa la unidad a cero
if (decena>=10){
// cuando la decena llegue a 10 se inicializa a cero
decena=0;
}
}
}
if (conmutador == 0) { // hace la multiplexacion conmutando entre los dos 7seg izq y der
digitalWrite(10, 1); // enciende el derecho
digitalWrite(11, 0); // apaga el izquierdo
var=unidad;
// iguala la variable que escribe el numero en el 7seg al valor de la unidad
conmutador=1;
// cambia el conmutador para que en el siguiente ciclo cumpla la otra condicion
}
else{
digitalWrite(10, 0);
digitalWrite(11, 1);
var=decena;
conmutador=0;
// apaga el derecho
// enciende el izquierdo
// iguala la variable que escribe el numero en el 7seg al valor de la decena
// cambia el conmutador para que en el siguiente ciclo cumpla la otra condicion
}
switch (var) {
case 1:
//escribe en el 7seg el numero 1
digitalWrite(2, 0);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
break;
case 2:
//escribe en el 7seg el numero 2
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 0);
digitalWrite(8, 1);
break;
case 3:
//escribe en el 7seg el numero 3
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 1);
break;
case 4:
//escribe en el 7seg el numero 4
digitalWrite(2, 0);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
break;
case 5:
//escribe en el 7seg el numero 5
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
break;
case 6:
//escribe en el 7seg el numero 6
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
break;
case 7:
//escribe en el 7seg el numero 7
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
break;
case 8:
//escribe en el 7seg el numero 8
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
break;
case 9:
//escribe en el 7seg el numero 9
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
break;
case 0:
//escribe en el 7seg el numero 0
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 0);
break;
default:
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
}
}
Anexos
GitHub: Es unaforja(plataforma de
desarrollo colaborativo) para alojar proyectos
utilizando el sistema decontrol de versiones
Git. Utiliza elframeworkRuby on Rails
porGitHub, Inc.(anteriormente conocida
comoLogical Awesome). Desde enero de
2010, GitHub opera bajo el nombre
deGitHub, Inc.El cdigo se almacena de
formapblica, aunque tambin se puede
hacer de forma privada, creando una cuenta
de pago.
TRIAC
Es
un
dispositivo
semiconductor
que
acta
como
interruptor
capaz
de
conmutar
la
corriente
alterna.
CNY 70
CNY 70
RELOJ
Reloj
A=11
B=12
C=8
D=7
E=6
F=10
G=9
INFRARROJO
Diseo bsico
PUENTE H
SERVOMOTORES
Los servomotores tuvieron que ser
modificados para que rueden los
360, por su precisin son muy
recomendados para este tipo de
proyectos, estos dispositivos
funcionan en un rango de 3,5V a 5V
donde nuestra tarjeta Arduino se
adapta al puente h y a este tipo de
motores.
CDIGO
/* C arro Inalambrico Bluetooth
Dibujo de las conexiones en www.elprofegarcia.com
ARDUINO L293D(Puente H)
5
10
6
15
9
7
10
2
5V
1, 9, 16
GND
4, 5, 12, 13
El motor 1 se conecta a los pines 3 y 6 del Puente H
El motor 2 se conecta a los pines 11 y 14 del Puente H
La fuente de alimentacion de los Motores se conecta a tierra y
el positivo al pin 8 del puennte H.
Conexion del Modulo Bluetooth HC-06 y el Arduino
ARDUINO Bluetooth HC-06
0 (RX)
TX
1 (TX)
RX
5V
VCC
GND
GND
!!Cuidado!! Las conexiones de TX y RX al modulo Bluetooth deben estar desconectadas
en el momento que se realiza la carga del codigo (Sketch) al Arduino.
Conexion Sensor Ultrasonido HC-SR04
ARDUINO Ultrasonido HC-SR 04
2
Echo
3
Trig
5V
VCC
GND
Gnd
*/
int izqA = 5;
int izqB = 6;
int derA = 9;
int derB = 10;
int vel = 255;
// Velocidad de los motores (0-255)
int estado = 'g';
// inicia detenido
int pecho = 2;
// define el pin 2 como (pecho) para el Ultrasonido
int ptrig = 3;
// define el pin 3 como (ptrig) para el Ultrasonido
int duracion, distancia; // para Calcular distacia
void setup() {
Serial.begin(9600); // inicia el puerto serial para comunicacion con el Bluetooth
pinMode(derA, OUTPUT);
pinMode(derB, OUTPUT);
pinMode(izqA, OUTPUT);
pinMode(izqB, OUTPUT);
pinMode(pecho, INPUT);
pinMode(ptrig,OUTPUT);
pinMode(13,OUTPUT);
}
void loop() {
if(Serial.available()>0){
// lee el bluetooth y almacena en estado
estado = Serial.read();
}
if(estado=='a'){
// Boton desplazar al Frente
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, vel);
analogWrite(izqA, vel);
}
if(estado=='b'){
// Boton IZQ
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, vel);
}
if(estado=='c'){
// Boton Parar
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
}
if(estado=='d'){
// Boton DER
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(izqA, 0);
analogWrite(derA, vel);
}
if(estado=='e'){
// Boton Reversa
analogWrite(derA, 0);
analogWrite(izqA, 0);
analogWrite(derB, vel);
analogWrite(izqB, vel);
}
if (estado =='f'){
digitalWrite(ptrig, HIGH);
delay(0.01);
digitalWrite(ptrig, LOW);
digitalWrite(13,LOW);
}
else{
// Si no hay obstaculos se desplaza al frente
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, vel);
analogWrite(izqA, vel);
}
}
if(estado=='g'){
// Boton OFF, detiene los motores no hace nada
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
}
}
SENSOR DE DISTANCIA
ULTRASNICO
Este sensor funciona enviando una frecuencia
de ultrasonido y calcula el tiempo que tarda
en llegar al obstculo y devolverse.
Por tal razn nuestro carro llega a una
distancia mayor de 2cm y este sensor
detecta el obstculo y hace que nuestro
programa cargado en la tarjeta de la orden al
puente h de cambiar los sentidos a los
motores, de manera que nuestro auto no
valla a chocar.
CARACTERSTICAS SENSOR DE
DISTANCIA ULTRASNICO
Alimentacin de 5 volts
Interfaz sencilla: Solamente 4 hilos Vcc,
Trigger, Echo, GND
Rango de medicin:2 cm a 400 cm
Corriente de alimentacin: 15 mA
Frecuencia del pulso: 40 Khz
Apertura del pulso ultrasnico: 15
Seal de disparo: 10uS
Dimensiones del mdulo: 45x20x15 mm.
Arduino Utilizando
Bluetooth
int led13=13;
int estado=0;
void setup(){
Serial.begin(9600);
pinMode(led13,OUTPUT);
}
void loop(){
if(Serial.available()>0){
estado = Serial.read();
}
if (estado =='1'){
digitalWrite(led13,HIGH);
}
if(estado=='2'){
digitalWrite(led13,LOW);
}
}
Bluetooth
Este mdulo es apto para conectar como esclavo a un
adaptador Bluetooth al PC, o un telfono Bluetooth. .
Pueden ajustarse los parmetros del mdulo mediante
comandos de control emitidos a travs de comandos AT.
Dispone de dos conexiones de salida para indicar el estado:
no conectado, conectado, as mismo se puede conectar a
diodos LED o a un pin de entrada de un microcontrolador y
analizar su estado. Es ideal como alternativa inalmbrica a
la transmisin en serie, todos los parametros se configuran
con Comandos AT. Una vez configurado se puede asumir
que es un cable serie. Con la base de conexin es an ms
fcil de utilizar, no es necesario adaptar los niveles lgicos
de la alimentacin a 3.3V (se puede alimentar hasta a 6V) y
adems de esto, puede adaptarse en una protoboard
ARDUINO +
LABVIEW
NOTAS
Estas practicas va a ser un poco molestas,
porque as el programa este bien va a
presentar errores o simplemente no se va a
ejecutar.
Por ejemplo al cargar el programa Lifa_Base en
nuestra tarjeta arduino se tiene que cerrar
Labview u otro programa que este ocupando el
puerto que tiene la tarjeta.
Si el programo elaborado est bien pero no se
ejecuta desde la interface, lo mas practico es
cerrar Labview y ejecutar nuevamente.
CONEXIONES
Est conexin
es vital para el
funcionamient
o de nuestro
programa.
LIFA_BASE
Practica
Medicina
Medicina
http://www.fucsalud.edu.co/index.ph
p/es/plan-de-estudios-medicina
Universidad Nacional
http://programasacademicos.unal.edu
.co/?
pt=2
Universidad Nacional
Programas
http://programasacademicos.unal.edu
.co/?
pt=2
REFERENCIAS
https://www.wevolver.com/gael.langevin/inmoov-robot/inmoov-robot/
description
/
https://www.wevolver.com/wevolver.staf /
Ingreso a posgrado
http://admisiones.unal.edu.co /
http://www.ingbiomedica.unal.edu.co/Admision.html
http://www.advancertechnologies.com/p/tutorials.html
http://www.ardumotive.com/new-cnc-plotter.html
IDE de Arduino Online
https://codebender.cc/static/walkthrough/page/4
PROBLEMAS
PROPUESTO
S
MIKROC
TABLAS DE MULTIPLICAR EN LCD 16 X2
Este
problema
inicialmente
fue
planteado en JAVA pero surgi la idea
de llevarlo a MIKROC con la misma
lgica que se tuvo en Java.
txt1[] =
txt2[] =
txt3[] =
txt4[] =
"Tablas Multiplicar";
"X";
"=";
"example";
char i;
char text0[10];
char text[10];
char text1[10];
int j,k,o;
int Result, Resultado;
void Move_Delay() {
Delay_ms(500);
}
void main(){
ANSEL = 0;
ANSELH = 0;
C1ON_bit = 0;
C2ON_bit = 0;
Lcd_Init();
// Loop variable
Lcd_Cmd(_LCD_CLEAR);
// Clear display
Lcd_Cmd(_LCD_CURSOR_OFF);
// Cursor of
//Lcd_Out(1,1,txt1);
// Write text in first row
//Lcd_Out(1,7,txt2);
for(j=1;j<=10;j++){
for(k=1;k<=10;k++){
Result=j*k;
IntToStr( j, text1 );
IntToStr( k, text0 );
IntToStr( Result, text );
//IntToStr( o, text1 );
//Lcd_Out(1,2,text1);
Lcd_Out(1,1,text1);
delay_ms(200);
Lcd_Out(1,7,txt2);
Lcd_Out(1,8,text0);
delay_ms(200);
Lcd_Out(2,1,txt3);
Lcd_Out(2,2,text);
delay_ms(200);
//o=j;
//Resultado=Result;
//
}
}
}
NMEROS PRIMOS
void main(){
//Characteristics of the pic 16f887________________
ANSEL = 0; // Configure AN pins as digital I/O
ANSELH = 0;
C1ON_bit = 0; // Disable comparators
C2ON_bit = 0;
//__________________________________________________
Lcd_Init();
// Initialize LCD
Lcd_Cmd(_LCD_CLEAR);
// Clear display
Lcd_Cmd(_LCD_CURSOR_OFF);
// Cursor of
//___________________________________________________
Lcd_Out(1,7,txt2); //Simbolo de la multiplicacin
//delay_ms(200);
Lcd_Out(2,1,txt3); //Sibolo de igual " = "
//delay_ms(200);
for(i=1;i<=limite;i++){
int cont=0;
for(j=1;j<=i;j++){
if(i%j==0)
cont++;
}
if(cont==2)
IntToStr( i, text1 );
Lcd_Out(2,2,text1);
delay_us(time);
}
}
CONEXIN DE
SERVOMOTORES
CERRADURA
ELECTRNICA
CERRADURA ELECTRNICA
Cdigo
unsigned short k p;
char code1[10] ,user1[4];
char msg1[20] = "...SYSTEM...",msg2[12] = "ENTER CODE";
char msg3[] = "ACCESS GRANTED",msg4[15] = "ACCESS DENIED";
char msg5[15] = "Enter New Code",msg6[] = " PROTECTED " ;
char msg7[] = " *WELCOME* " , msg8[] = " *WARNING* ";
char msg9[] = " SUCCESSFUL ",msg10[] = "*Done*";
void Move_Delay() {
Delay_ms(500);
}
int i=0,j,cnt,u=0;
void code_enter()
{
kp = 0;
do
kp = Key pad_Key_Click();
while (!kp);
switch (kp)
{
case 1: kp = 49; break; // 1
case 2: kp = 50; break; // 2
case 3: kp = 51; break; // 3
case 5: kp = 52; break; // 4
case 6: kp = 53; break; // 5
case 7: kp = 54; break; // 6
case 9: kp = 55; break; // 7
case 10: kp = 56; break; // 8
case 11: kp = 57; break; // 9
case 4: kp = 65; break; // A
case 8: kp = 66; break; // B
case 12: kp = 67; break; // C
case 16: kp = 68; break; // D
case 13: kp = 42; break; // *
case 14: kp = 48; break; // 0
case 15: kp = 35; break; // #
}
code1[i] = kp;
Lcd_Chr(2, i+6, code1[i]);
i++;
}
void delay_20ms()
{
Delay_ms(20);
void code_read()
{
delay_20ms();
user1[0] = EEPR OM_Read(0x00);
delay_20ms();
user1[1] = EEPR OM_Read(0x01);
delay_20ms();
user1[2] = EEPR OM_Read(0x02);
delay_20ms();
user1[3] = EEPR OM_Read(0x03);
delay_20ms();
}
////////Bloque desconocido para mi////////////////
void code_write()
{
delay_20ms();
EEPROM_Write(0x 00,code1[0]);
delay_20ms();
EEPROM_Write(0x 01,code1[1]);
delay_20ms();
EEPROM_Write(0x 02,code1[2]);
delay_20ms();
EEPROM_Write(0x 03,code1[3]);
}
/////////////_______________________//////////////
//_______________________________________________
void change_code()
{ top2:
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 2, "Enter new code");
Delay_ms(500);
i=0;
code_enter();
if(code1[0] == 42)
{goto top2 ;}
code_enter();
if(code1[1] == 42)
{goto top2 ;}
code_enter();
if(code1[2] == 42)
{goto top2 ;}
code_enter();
if(code1[3] == 42)
{goto top2 ;}
code_enter();
if(code1[4] == 42)
{goto top2 ;}
if(code1[4] == 35){
code_write();
code_read();
Delay_ms(500);
Lcd_Out(2,5,msg10);
Delay_ms(1500);
}
else {
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,7, "ER ROR");
Delay_ms(1000); }
}
//____________________________________________________
void main()
{
ADCON1 |= 0x07;
TR ISA = 0x00;
Keypad_Init();
Lcd_Init();
code_read();
if(user1[0] == 0x FF && user1[1] == 0xFF && user1[2] == 0xFF && user1[3] == 0xFF
)
{
EEPROM_Write(0x 00,'2');
delay_20ms();
EEPROM_Write(0x 01,'5');
delay_20ms();
EEPROM_Write(0x 02,'8');
delay_20ms();
EEPROM_Write(0x 03,'0');
}
code_read();
Lcd_Cmd(_LCD_CLEAR );
Lcd_Cmd(_LCD_CURSOR_OFF );
Delay_ms(500);
Lcd_Out(1, 2,msg1 );
Lcd_Out(2, 3,msg6 );
Delay_ms(3000);
Lcd_Cmd(_LCD_CLEAR );
cnt=0;
do
{ top:
PORTA.B0=1;
PORTA.B3=0;
Lcd_Cmd(_LCD_CLEAR );
Lcd_Out(2, 4, " Press '*'");
i = 0;
code_enter();
if(code1[0] == 42)
{ top3:
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 4, msg2);
i = 0;
code_enter();
if(code1[0] ==
{goto top3 ;}
code_enter();
if(code1[1] ==
{goto top3 ;}
code_enter();
if(code1[2] ==
{goto top3 ;}
code_enter();
if(code1[3] ==
{goto top3 ;}
code_enter();
if(code1[4] ==
{goto top3 ;}
if(code1[0] == '2' && code1[1] == '3' && code1[2] == '4' && code1[3] == '5' && code1[4] == '5') //check master code
{
code_enter();
if(code1[5] == 35)
{
change_code();
goto top ;
}
}
if(cnt<3 && code1[0] == user1[0] && code1[1] == user1[1] && code1[2] == user1
[2] && code1[3] == user1[3] && code1[4] == 35)
{ if(PORTA.B2 == 1)
{
PORTA.B2=0;
cnt=0;
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,2,msg1);
Delay_ms(3000);
Lcd_Cmd(_LCD_CLEAR);
goto top ;
}
42)
42)
42)
42)
42)
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 2, msg3);
Lcd_Out(2, 2, msg7);
cnt=0;
PORTA.B0=0;
PORTA.B2=1;
Delay_ms(6000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(2, 2, msg7);
else
{
cnt++;
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 3,msg4 );
Delay_ms(2000);
}
if(cnt>=3)
{
do
{
PORTA.B2=0;
PORTA.B0=0;
PORTA.B3=1;
while(u<3) {
Lcd_Cmd(_LCD_CLEAR);
Delay_ms(500);
Lcd_Out(1, 3, msg8 );
Delay_ms(500);
Lcd_Cmd(_LCD_CLEAR);
Delay_ms(500);
Lcd_Out(1, 3, msg8 );
Delay_ms(1000);
u++;
}
cnt=2;
u=0;
goto top ;
}
while(1);
}
}
}
while(1);
}
/*
Programa: Control de Acceso a Puertas con Clave y Display LCD
Autor:
Web: www.humbertohiginio.com
Canal de Youtube: https://www.youtube.com/user/HHSolis
Video Exclusivo para mi canal de Youtube
Todos los Derechos Reservados - 2016
Cdigo de Dominio Pblico
*/
// Definimos el Keymap
char keys[R OWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = { 9,8,7,6 };// C onectar los keypads ROW1, R OW2, R OW3 y ROW4 a esos Pines de Arduino.
byte colPins[COLS] = { 5,4,3,2, };// C onectar los keypads COL1, COL2, COL3 y COL4 a esos Pines de Arduino.
Humberto Higinio
CNC
Otros
Otros
XBOX 360
CONDENSADORES
Ethernet
Proyecto Comunicaciones
Ejercicio Sis
Ejercicio SiS
Solucin al Ejercicio
TRANSISTOR
https://
bogotacity.olx.com.co/analizador-fluke-199-iid-894972136
Cdigo facilito
usuario [email protected]
contrasea wilpi7185467
MEDIDOR DE BATERAS
Este dispositivo nos permitir, por medio de dos LED's de color, saber el estado de
la carga de una batera cualquiera.
El circuito es mas que simple, cuando la tensin en el cursor del preset supera el
valor del diodo zener (Zx) + la tensin base-emisor del transistor mas la cada de
tensin de la resistencia de 33K el transistor se disparar, haciendo que el LED
verde brille. Al dispararse este transistor el segundo queda con su base a masa lo
cual hace que el LED rojo no ilumine.
Ahora, si la tensin presente en la base del primer transistor cae por debajo del
nivel de disparo el mismo se abrir, quedando sin masa el LED verde lo que har
que ste se apague. En este momento el LED verde se comporta como un diodo
en directa, haciendo que la base del segundo transistor quede exitada y
obligndolo a conducir. Al conducir este transistor hace que el LED rojo brille. De
esta forma tenemos un LED verde que brilla cuando la tensin de entrada alcanza
o supera la establecida en el preset y, cuando esta tensin no logra el nivel
requerido, el LED rojo es el que enciende.
Dado que quisimos hacer que este sistema sea apropiado para bateras de
diversas tensiones a continuacin proveemos una tabla que nos da los valores de
Zx y Rx apropiados segn la tensin de trabajo.
En nuestras pruebas estos valores fueron mas que correctos, pero si se desea
lograr mas brillo en los LED's bastar con reducir un poco los valores de Rx.
MEDIDOR DE BATERAS
COMPRAS
https://
www.banggood.com/es/Wholesale-Ardu
ino-SCM-and-3D-Printer-Acc-c-21530-1-1-45-0_page2.html
CMD
shutdown -s -t 3600
Temporizar
shutdown a Cancelar
Temp.
Cerrar un programa a las
malas
Tasklist (Lista de los
programas)
Taskkill / PID xxx /F
Alternador
Dispositivo que convierte la energa
mecnica en energa elctrica.
Programa
//reloj7seg.c
//Microcontrolador: PIC16F877A
//Oscilador: Externo 4MHz (modo HS)
//******
//El Proteus 7.5 Professional no acepta la simulacin del puerto E y presenta un mensaje de error
//al intentar su simulacin. Se prob un ejemplo bsico para encender un LED el cual
//funcion perfectamente en la prctica pero el Proteus generaba el error "Internal Exception:
//acces violation in module PIC16.DLL".
//******
//Entradas:
//AA: Avance Automtico al mantener presionado (tambin avance paso a paso al pulsar y soltar).
//Ajuste de HORAS (AA) ->RB7(40)
//Ajuste de MI NUTOS (AA) ->RC7(26)
//ACTI VAR ->RD7(30)
//Salidas:
//Horas -> Puertos A y B
//Minutos -> Puertos C y D
//Dos puntos (:) ->RE1(9)
//Pulso de 1 segundo -> RE0(8)
//Funcin para transformar de binario(decimal) a 7 segmentos:
char Bin2_7seg(char digit){
switch (digit){
case 0: return 0x3F; //0x3F es el cdigo 7-segmentos del 0.
case 1: return 0x06; //0x06 es el cdigo 7-segmentos del 1.
case 2: return 0x5B;
case 3: return 0x4F;
case 4: return 0x66;
case 5: return 0x6D;
case 6: return 0x7D;
case 7: return 0x07;
case 8: return 0x7F;
case 9: return 0x67;
}
}
char contador=0,segundos=0,minutos=0,horas=0, minutosBCD, unidades, decenas, horasBCD, j=0;
bit activar;
void main(){
PORTA=0x00;
RE0_bit=0;
RE1_bit=0;
ADCON1=0x06; //Pines RA<5:0> como E/S digital.
PORTB=0x00; //Inicializacin.
PORTC=0x00;
PORTD=0x00;
TRISA=0x00; //Puerto A como salida.
TRISB=0x80; //RB7 como entrada. RB<6:0> como salidas.
TRISC=0x80; //RC7 como entrada. RC<6:0> como salidas.
TRISD=0x80; //RD7 como entrada. RD<6:0> como salidas.
TRISE0_bit=0; //RE0 como salida.
TRISE1_bit=0; //RE1 como salida.
OPTION_REG=0b01010111;
//Pull ups habilitados.Timer0 como temporizador.
//Prescaler asignado al Timer0. Prescaler 1:256.
TMR0=61;
//Valor inicial del TMR0. Interrupcin cada 50 ms.
GIE_bit=1;
//I nterrupciones habilitadas.
T0IE_bit=1;
//Interrupcin del Timer0 habilitada.
activar=1;
while (1){
if (segundos==60){
minutos++;
segundos=0;
}
if (minutos==60){
horas++;
minutos=0;
}
if (horas==24) horas=0;
//Encender los displays por 1 segundo al presionar ACTIVAR:
if (activar==1){
//Encender los dos puntos ":" :
RE1_bit=1;
//Transformar los minutos para su presentacin:
minutosBCD=Dec2Bcd(minutos);
//Transforma de binario a BCD.
unidades=0b1111&minutosBCD;
//Sacar las unidades.
decenas=0b11110000&minutosBCD;
//Sacar las decenas.
decenas=decenas>>4;
//Desplazar 4 bits a la derecha.
PORTD=Bin2_7seg(unidades);
//Unidades al puerto D.
PORTC=Bin2_7seg(decenas);
//Decenas al puerto C.
//Transformar las horas para su presentacin:
horasBCD=Dec2Bcd(horas);
//Transforma de binario a BCD.
unidades=0b1111&horasBCD;
//Sacar las unidades.
decenas=0b11110000&horasBCD;
//Sacar las decenas.
decenas=decenas>>4;
//Desplazar 4 bits a la derecha.
PORTB=Bin2_7seg(unidades);
//Unidades al puerto B.
if (decenas==1)
PORTA=Bin2_7seg(decenas);
//Decenas al puerto A.
if (decenas==2)
PORTA=0x3B;
//Formar el nmero "2".
if (decenas==0) PORTA=0;
//Apagar las decenas cuando valgan cero.
}
else{
PORTA=0;
PORTB=0;
PORTC=0;
PORTD=0;
PORTE=0;
}
//Generar un pulso a una determinada hora, por ejemplo a las 2h01.
if (horas==2 && minutos==01 && segundos==0)
RE0_bit=1;
if (horas==2 && minutos==01 && segundos==1)
RE0_bit=0;
//Generar un pulso a una determinada hora, por ejemplo a las 15h25.
if (horas==15 && minutos==25 && segundos==0)
RE0_bit=1;
if (horas==15 && minutos==25 && segundos==1)
RE0_bit=0;
}
}
void interrupt(void){
//Botn HORAS presionado:
if (Button(&PORTB,7,1,0)){
activar=1;
horas++;
if (horas==24) horas=0;
Delay_ms(200);
}
//Botn MINUTOS presionado:
if (Button(&PORTC,7,1,0)){
activar=1;
minutos++;
if (minutos==60) minutos=0;
Delay_ms(200);
}
//Botn ACTI VAR presionado:
if (Button(&PORTD,7,1,0))
activar=1;
//Medir 1 segundo (para el encendido de los displays):
if (activar==1){
j++;
if (j==20){
j=0;
activar=0;
}
}
//Medidor de segundos (para el reloj):
TMR0=61;
//Valor inicial del TMR0. Interrupcin cada 50 ms.
contador++;
if (contador==20){
segundos++;
contador=0;
}
T0IF_bit=0;
//Borra la bandera de interrupcin.
}
Logaritmos
Paginas de desarrollo
http://
elecnote.blogspot.com.co/search/label/Re
al%20Time%20Clock
Reparacin de celulares
http://www.movilcenterperu.com/
Logos
https://es.cooltext.com/Logo-Design-Burning
Programacin c
Biografa Programacin en
C++
http://ingenieriaalainformatica.jimdo
.com/ejercicios-de-lenguaje-c
/
CONCEPTOS FSICOS
Permeabilidad: es la capacidad que tiene un material
de permitirle a un flujo que lo atraviese sin alterar su
estructura interna. Se afirma que un material es
permeable si deja pasar a travs de l una cantidad
apreciable de fluido en un tiempo dado, e impermeable
si la cantidad de fluido es despreciable.
Interpolacin: Es la obtencin de nuevos puntos
partiendo del conocimiento de un conjunto discreto de
puntos.
En ingeniera y algunas ciencias es frecuente disponer
de un cierto nmero de puntos obtenidos por muestreo
o a partir de un experimento y pretender construir una
funcin que los ajuste.
Amplificador Sumador
AMPLIFICADOR
SUMADOR
VALOR RMS
5V
Valor Pico a Pico=10V