Únete gratis a la revolución de los 32 bits.

Gana un microcontrolador de 32 bits mandando un video donde muestres como te deshaces de un microcontrolador de 8 bits.

La fuente de poder.

Acondiciona la fuente de poder de tu vieja pc para usarla con tus proyectos.

Gamepads de SNES en Windows y Linux.

Adapta tu viejo gamepad de SNES para conectarlo al puerto paralelo (DB25) de la computadora, probado en WinXP y PupppyLinux.

martes, 1 de enero de 2013

PWM Variable con ATMega16


Generar una señal PWM configurable en frecuencia y ciclo útil es de lo más básico, es por eso que en esta entrada mostramos como hacerlo con un microcontrolador ATMega16 en esamblador.

Señal PWM generada (Línea amarilla).

Para lograr esta señal, vamos a hacer un contador ascendente/descendete y vamos a compararlo con una señal de referencia. Para fines ilustrativos, en el circuito se han puesto convertidores DAC del contador (línea azul) y la referencia (línea morada) cuya salidas son conectadas al osciloscopio virtual, sin embargo, esto no es necesario porque todo el proceso se realiza dentro del microcontrolador y podría solo salir la señal PWM deseada por el pin 4 (PB3).

Esquemático del circuito.

Para configurar la señal en tiempo de ejecución, usamos la terminal virtual de ISIS, la cual se comunica de manera serial con el microcontrolador, los comandos usados son:
W: Incrementa la señal de referencia.
S: Disminuye la señal de referencia.
E: Disminuye a frecuencia de operación.
D: Aumenta la frecuencia de operación.

Configurando la señal PWM.


Código en ASM:

.include "m16def.inc"
.device ATmega16

.def temp = R16
.def fre  = R17
.def ref  = R18
.def dato = R19

.cseg
.org 0x000

reset:
ldi temp,0x04;ubica apuntador de la pila
out sph,temp
ldi temp,0x5f
out spl,temp

ldi temp,0xff
out DDRB,temp
out DDRA,temp
out DDRC,temp

ldi temp,  0x71
out TCCR0, temp
ldi temp,  0x00
out TCNT0, temp

ldi temp, 128
out OCR0, temp

rcall conf_usart;configurar la usart
ldi zh, high(2*duty)
ldi zl, low(2*duty)

ldi fre, 1
ldi ref, 5

main:
in temp, TCNT0
out PORTA, temp
in temp, OCR0
out PORTC, temp
sbis ucsra,rxc
rjmp main

rcall recibe
rjmp main

recibe:
in dato,udr
rcall transmite
cpi dato, $57 // W
brne baja_ref
inc ref
mov temp, ref
rcall transmite_temp
cpi ref, 10
brne baja_ref
ldi ref, 1
baja_ref:
cpi dato, $53 // S
brne sube_frec
dec ref
cpi ref, 0
brne sube_frec
ldi ref, 9
sube_frec:
cpi dato, $45 // E
brne baja_frec
inc fre
cpi fre, 6
brne baja_frec
ldi fre, 1
baja_frec:
cpi dato, $44 // D
brne final
dec fre
cpi fre, 0
brne final
ldi fre, 5
final:
ldi zh, high(2*duty)
mov zl, ref
lpm temp, z
out OCR0, temp
ldi zh, high(2*frec)
mov zl, fre
lpm temp, z
out TCCR0, temp
ret

transmite:
sbis ucsra, udre
rjmp transmite
out udr,dato
ret

transmite_temp:
sbis ucsra, udre
rjmp transmite
out udr, temp
ret

conf_usart:
clr r16;valor de recarga para una velocidad de 9600 bps
out ubrrh,r16
ldi r16,12
out ubrrl,r16

ldi r16,0x02;
out ucsra,r16

ldi r16,0x18;habilita receptor y trasmisor
out ucsrb,r16;sin interrupciones

ldi r16,0x86; 1 bit de paro,sin paridad y datos de 8 bits
out ucsrc,r16
ret

.org 0x200
duty: .db 00, 00, 32, 64, 96, 128, 160, 192, 224, 255
.org 0x300
frec: .db $71, $71, $72, $73, $74, $75


Descarga código y simulación aquí.

Comunicación serial PIC a PIC

La comunicación RS232 se ha vuelto obsoleta en cuanto a computadoras se refiere, pero en el mundo de la electrónica sigue siendo un protocolo muy popular.

Es por eso que dedicamos este post a un ejemplo de comunicación serial entre 2 PIC16F877a (un emisor y un receptor), para ello los programas se han escrito en C con el compilador CCS y simulado en ISIS de PROTEUS.

Al puerto B del microcontrolador emisor se le han conectado entradas lógicas, los cuales se muestran en el puerto B del receptor. Ambos microcontroladores tienen un cristal de 20MHz y usan su módulo serial por hardware.


Esquemático y simulación.

Código emisor:
#include "16f877a.h"
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

int main( void ){
int dato;
while(1){
   dato=input_b(); //Recibimos un entero de 8 bits (Puerto B).
   putc(dato); //Mandamos el dato por el puerto serial.
   delay_ms(1000); //Hacemos un retardo
}
return 0;
}


Código receptor:
#include "16f877a.h"
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)

int main( void ){
int dato;
while(1){
   if(kbhit()){ //Revisamo si hemos recibido algo por el puerto serial.
      dato=getc(); //Recibimos un dato de 8 bits
      output_b(dato);//Mostramos el dato en el puerto B
   }
}
return 0;
}


Esta es la configuración típica utilizada, estos mismos programas se pueden usar si en lugar de un cable se utiliza un módulo Bluetooth serial,ya que el protocolo es transparente para el micro.

Durante la simulación es muy conveniente que el micro nos mande mensajes, así como en un programa de PC normal con la ayuda de la función printf(), para este caso se puede conectar la terminal virtual de ISIS a la línea TX del micro que nos va a mandar la información y, con un simple printf() el programa va a mandar esa cadena por el puerto serial.

Descargar códigos y simulación aquí.

domingo, 5 de junio de 2011

Acceder a Facebook desde un lugar restringido.

En algunos lugares como escuelas y oficinas, no está permitido acceder a páginas de ocio como el Facebook. Aquí les traigo un forma de hacerlo, no se si funcione en todas partes, pero hasta el día 5 de junio de 2011, en la Universidad Tecnológica de la Mixteca, si funciona.

El truco es escribir completo (o copiar y pegar en la barra de direcciones):

https://www.facebook.com

domingo, 3 de abril de 2011

“Ensayo, Código Ético del Mecatrónico”

Este ensayo fue escrito por un estudiante de la Universidad del Valle de México y, aunque no es algo oficial, tiene varios puntos muy buenos.

Bruno I. González Mariles
UVM - Querétaro

Resumen
La ética e ingeniería mecatrónica pueden ser dos temas que al parecer pueden sonar extremos entre si, pero en este ensayo se presenta un enlace entre los dos. El tener presente a la ética en la industria le es favorable para poder tener un régimen ético universal.

El objetivo de este ensayo es crear conciencia a todos los estudiantes, egresados o interesados en la ingeniería mecatrónica o ramas a fines, que puede existir detrás de los libros, partes mecánicas, circuitos, diseños, cálculos y más que existe una parte humana y realista, para lograr el bien común en la sociedad.

Antecedentes
La UNESCO define a la Mecatrónica como:
"La integración sinérgica de la ingeniería mecánica con la electrónica y el control inteligente por computadora en el diseño y manufactura de productos y procesos".

Sin embargo, una manera más interesante de definir la Mecatrónica es posible por:
"Diseño y construcción de sistemas mecánicos inteligentes".

[1]. Pero este termino fue desarrollado en los años 60’s exactamente por primera vez en 1969 por el Ingeniero Tetsuro Mori, trabajador de la empresa japonesa Yaskawa. En un principio se definió como la integración de la mecánica y la electrónica en una máquina o producto, pero luego se consolidó como una especialidad de la
ingeniería e incorporó otros elementos como los sistemas de computación, los desarrollos de la microelectrónica [2] Ya desde antes existía una necesidad huma de crear leyes universales para que este tipo

de sistemas mecatrónicos se pudieran regir universalmente , un ejemplo es en su libro "Yo, robot", de 1950, Isaac Asimov planteaba tres leyes sobre el comportamiento de un robot:
1) No puede hacer daño a un ser humano o, por inacción, permitir que un ser humano sufra daño.
2) Debe obedecer las órdenes dadas por los seres humanos, excepto si estas órdenes entrasen en conflicto con la Primera Ley.
3) Debe proteger su propia existencia en la medida en que esta protección no entre en conflicto con la Primera o la Segunda Ley. [3]

Pero es donde proviene el primer dilema ético , y el enlace de la mecatrónica con la ética , pues es suficiente pensar en el libro que Robert Wiener ha dedicado a la figura del Golem [4] , o al título de un libro reciente de estudios religiosos: Is God a Programmer? [5].
Hoy, en definitiva, los programadores somos nosotros. Hoy nosotros somos los creadores, y los robots son nuestros Golem. Pero, ¿somos realmente como Dios?, y más aún, ¿cuál es la relación que podemos tener con nuestras criaturas? (o, mejor dicho, con nuestras creaciones), ¿qué responsabilidad tenemos en estos casos? Responsabilidad de un Ingeniero Mecatrónico para poder lidiar con estos términos como, responsabilidad, creación, daño, ser humano, conflicto, órdenes, existencia, dios.

Por esto nosotros queremos proponer un código ético, el cual cumpla con los contenidos vistos en la clase de Ética para mecatrónicos los cuales son los siguientes contenidos:
1. Bienestar de las personas.
2. Competencia y profesionalidad.
3. Confidencialidad y privacidad.
4. Responsabilidad en la actuación profesional.
5. Evitar la explotación: en transacciones económicas, experimentación, enseñanza de la profesión, abuso sexual, manejo engañoso de la propaganda y MCS.
6. Relación interprofesionales.
7. Solución ética de problemas específicos.

Así como también las funciones principales de un código de ética son:
1. Declarativa: define los valores fundamentales
2. Identificativa: da identidad a la profesión y al rol social de la profesión uniformizando conductas.
3. Informativa: comunica a la sociedad cuales son los fundamentos y criterios éticos de la relación profesional persona.
4. Discriminativa: que actos son lícitos y cuales no.
5. Metodológica y valorativa: define los caminos para las decisiones y permite valorar las situaciones específicas.
6. Coercitiva: permite controlar las actitudes negativas.
7. Protectiva: protege la profesión de las amenazas que la sociedad puede ejercer sobre ella. [6].

Cabe resaltar que también nos basamos en códigos éticos ya existentes para poder adaptarlos al contexto mecatrónico.

Código Ético

  • El Ingeniero Mecatrónico debe reconocer que: Vida, seguridad, salud, bien común y bienestar de la población, depende de su juicio y acciones [7]. El ingeniero Mecatrónico debe de estar consiente de cualquier acción buena o mala y que estas repercuten directamente en la sociedad.

  • El Ingeniero Mecatrónico debe adquirir las capacidades necesarias para alcanzar una vida plena. [7]. Tomando en cuenta que una vida plena como el cumplimiento de las necesidades de lo que Maslow

    formula en su teoría una jerarquía de necesidades humanas y defiende que conforme se satisfacen las necesidades más básicas (parte inferior de la pirámide), los seres humanos desarrollan necesidades y deseos más elevados (parte superior de la pirámide). [8]. Así como también la auto-realización del mismo.
  • El Ingeniero Mecatrónico debe “Crear como un Dios, mandar como un rey y trabajar como un esclavo”. Esto en términos figurativos, tener la dedicación de que cada creación por muy simple o compleja que sea debe tener la dedicación como si fuera una creación divina, empeño y responsabilidad que conllevan. Mandar como un rey, es delegar con el juicio y responsabilidad como si fuera un rey (líder) y trabajar como un esclavo es trabajar arduamente y dar todo por el todo en los proyectos que se realizan.
  • El Ingeniero Mecatrónico debe usar sus conocimientos para mejorar el bienestar del ser humano. [7]. El ingeniero usara sus conocimientos para ayudar y no para perjudicar al ser humano.
  • El Ingeniero Mecatrónico luchará por aumentar el prestigio de su profesión. [7]. Se deberá actualizar y publicar cualquier conocimiento nuevo, para que los demás ingenieros puedan trascender y aumentar el prestigio de la profesión. Así mismo el ingeniero mecatrónico debe de crear su reputación profesional sobre el mérito de sus servicios.
  • Los costo de servicios de Ingeniería Mecatrónica deben ser justos. Los ingenieros mecatrónicos deberán usar su criterio para poder cobrar justamente, nunca malbaratando ni inflando el costo de sus servicios.
  • El Ingeniero Mecatrónico deberá estar preparado para romper paradigmas. Teniendo en cuenta que según el filósofo y científico Thomas Kuhn, dio a paradigma su significado: El conjunto de prácticas que definen una disciplina científica durante un período específico de tiempo. En si, los paradigmas son ideas establecidas previamente de cómo pensar o hacer algo en particular y esto se da mucho en la industria. El ingeniero debe de ser flexible en sus paradigmas para tener la capacidad de ver cambios y tener la visión del futuro ya que son capaces de romper sus viejos paradigmas para construir constantemente nuevos.
  • El Ingeniero Mecatrónico debe tener en cuenta que la persona nunca debe considerarse como medio, sino como fin. [9] Este punto es esencial, en la industria se podrá aplicar ya que se tiene contacto personal desde un obrero hasta un alto mando gerencial y todos por igual se les debe de tratar con igualdad y respeto que se merecen.
  • El Ingeniero Mecatrónico debe emitir informes, reportes y mediciones conforme a los reglamentos y estatutos de confidencialidad de la empresa, de los cuales se debe expresar la información en forma clara y honesta. Se respetarán los códigos éticos de las empresas donde se estará laborando.
  • El Ingeniero Mecatrónico deberá saber confiar en el colega. Al encontrarse en un ambiente profesional el ingeniero mecatrónico deberá de confiar en el colega ya sea otro ingeniero mecatrónico o algún otro colega o compañero de trabajo.
  • El Ingeniero Mecatrónico deberá saber que "la intensidad con la que se trabaje en un área en especifica es directamente proporcional a la diferencia de potencial de intelecto e investigación aplicada e inversamente proporcional a la resistencia de perseverar para obtener resultados del mismo".[10].

Conclusiones
El anterior ensayo se trató de manera general como si fuese un código ético universal donde puede valer para un mecatrónico mexicano , como para un mecatrónico asiático. Y este mismo queda abierto a críticas , puntos de vista, aciertos o iniciativas de nuevos puntos a tratar.
Nos dio la experiencia de crear un código enfocado cien por ciento a un ingeniero mecatrónico, donde se verá reflejado e identificado. El cual nosotros a un paso de salir al mundo laboral lo vemos de una manera externa a este, esperando que cuando estemos trabajado lo cumplamos al pie de la regla por así decirlo.

Referencias bibliográficas
[3] Asimov Isaac, Escritor Futurista. El comentario aquí referido proviene de su obra "Yo, robot", de 1950
[4] N.Wiener, God, Golem, Inc., The MIT Press, Cambridge (Mass.) 1964.
[5] .L.Simons, Is God a Programmer? Religion in the Computer Age, Harvester Press, Sussez, 1988.
[6] Presentación SEG Pres_ÉTICA.pptx Vista en la clase Ética para Meca trónica del Intersemestral A 2010 UVM Querétaro Impartida por Gerardo Ruvalcaba PalaciosPsi-Health Retroalimentación Biológica
[7] http://arisecenter.eng.fiu.edu/iie_latino/about/codigo.htm Fue modificado para poder aplicarlo en un contexto mecatronico.
[9] Llano (1997, p. 89-102) ,Principios formales de moralidad
[10]Basada en la Ley de Ohm.