quinta-feira, 27 de agosto de 2009

Femto OS: RTOS for small MCU's like AVR

O Femto OS é um sistema operativo muito compacto portavel de tempo real - (RTOS) para microcontroladores com RAM e flash minimos, digamos de 2KB a 16KB flash, 128 a 16KB flash, e 128 a 1024 bytes ram.

 

Ver:

Femto OS: RTOS for small MCU's like AVR:

The Femto OS is a very concise portable real time - preemptive operating system (RTOS) for embedded microcontrollers with minimal ram and flash, say 2KB .. 16KB flash and 128 .. 1024 bytes ram. The main target is the Atmel AVR architecture, such as the ATtiny or smaller ATmega series. The OS runs well on larger hardware also. The system is written in C with a separate port file. Porting has been done for 31 AVR devices.

AVR femtoKernel:

I needed a realtime OS Kernel which could run on the smallest devices available. By that I mean devices with less than 2KB of flash and less than 256 bytes of RAM. I found that most rtos-es for small architectures were taillored for devices above 32KB of flash, which was unacceptable.

What I did was take an approach which would produce an extremely light kernel, cosisting only of a task scheduler. It's preemptive, round-robin, which means that one process can interrupt another, and each process has CPU access a limited amount of time. The footprint for this Kernel is around 600bytes of flash. 16bit Timer1 is used to determine the amount of time elapsed for a process.

The code has a test application consisting of 3 processes. Each process runs for about 20msec. If you decide to use my kernel, be sure to make estimates of the number of processes and process stack usage and modify OS_cfg.h accordingly.

Special thanks go to:
Silviu "Sil" Buligan
Ovidiu "Shau" Buligan
Attila Csibi
Vasile Toth

 

FreeRTOSTM is a portable, open source, royalty free, mini Real Time Kernel - a free to download and free to deploy RTOS that can be used in commercial applications.
Downloaded more then 77,500 times during 2008, FreeRTOS is the cross platform de facto standard for embedded microcontrollers.
 

sexta-feira, 24 de julho de 2009

O Eterno 555

O CI timer 555 existe à mais de 30 anos.  180px-Signetics_NE555N

O chip foi originalmente fabricado pela Signetics.  Nos primeiros três meses após a sua introdução (1972), foram vendidos mais de meio milhão deles.   Além disso, tem sido um sucesso: desde aquela época que o 555 tem sido CI mais popular vendido a cada ano!

Actualmente, faz sentido utilizar a versão CMOS deste CI, uma vez que consome muito menos energia.

Praticamente tudo o que está relacionado com o 555 pode ser encontrado em http://www.schematica.com/555_Timer_design/555_Timer_PRO.htm. Pode ser descarregado deste site um programa, que calcula facilmente os valores para os componentes RC. O programa é adequado para ambos os modos ‘astable’ e ‘bistable’. Os botões de "ajuste" são usados para alternar entre a versão única 555 e a versão dupla (o 556). Quando um valor diferente é escolhido para C1, as resistências mudam automaticamente.555ast

 

Source:  [Link]

 

 

 

 

Ver:

 555 timer IC 

NE555 Astable Multivibrator Frequency and Duty Cycle Calculator

555 and 556 Timer Circuits:

dutycycle

Duty cycle

The duty cycle of an astable circuit is the proportion of the complete cycle for which the output is high (the mark time). It is usually given as a percentage.

For a standard 555/556 astable circuit the mark time (Tm) must be greater than the space time (Ts), so the duty cycle must be at least 50%:

Duty cycle  =      Tm       =  R1 + R2

                       Tm + Ts       R1 + 2R2

555ast2

 

To achieve a duty cycle of less than 50% a diode can be added in parallel with R2 as shown in the diagram. This bypasses R2 during the charging (mark) part of the cycle so that Tm depends only on R1 and C1:

Tm = 0.7 × R1 × C1 (ignoring 0.7V across diode)
Ts  = 0.7 × R2 × C1 (unchanged)

 

Duty cycle with diode  =      Tm        R1 

                                         Tm + Ts     R1 + R2

Use a signal diode such as 1N4148.


PWM Speed Motor Controller:

pwm555

This 555 timer based PWM controller features almost 0..100% pulse width regulation using R1, while keeping the oscillator frequency relatively stable. The frequency is dependent on values of R1 and C1, values shown will give a frequency range from about 170 to 200 Hz. Any 555 chip will do, CMOS is fine as well. Diodes are not critical, I used 1N4148. Total cost of parts is about $2. As the whole thing is quite trivial, it's very easy to build on prototyping board like I did (as you can see, one of capacitors - C1 is replaced with different value, 0.047 uF to be precise).

A Simple PWM Circuit Based on the 555 Timer:

a-simple-pwm-circuit-based-on-the-555-timer

One of the most fundamental problems in robotics is DC motor speed control. The most common method of speed control is PWM or pulse width modulation. Pulse width modulation is the process of switching the power to a device on and off at a given frequency, with varying on and off times. These on and off times are referred to as "duty cycle". The diagram below shows the waveforms of 10%, 50%, and 90% duty cycle signals.


When the circuit powers up, the trigger pin is LOW as capacitor C1 is discharged. This begins the oscillator cycle, causing the output to go HIGH.


When the output goes HIGH, capacitor C1 begins to charge through the right side of R1 and diode D2. When the voltage on C1 reaches 2/3 of +V, the threshold (pin 6) is activated, which in turn causes the output (pin 3), and discharge (pin 7) to go LOW.


When the output (pin 3) goes LOW, capacitor C1 starts to discharge through the left side of R1 and D1. When the voltage on C1 falls below 1/3 of +V, the output (pin 3) and discharge (pin 7) pins go HIGH, and the cycle repeats.


Pin 5 is not used for an external voltage input, so it is bypassed to ground with an 0.01uF capacitor.
Note the configuration of R1, D1, and D2. Capacitor C1 charges through one side of R1 and discharges through the other side. The sum of the charge and discharge resistance is always the same, therefore the wavelength of the output signal is constant. Only the duty cycle varies with R1.


The overall frequency of the PWM signal in this circuit is determined by the values of R1 and C1. In the schematic above, this has been set to 144 Hz.

quinta-feira, 4 de junho de 2009

Metal Oxide Varistor (MOV) como Surge protector

Um varistor ou VDR (do inglês Voltage Dependent Resistor) é um componente electrónico cujo valor de resistência eléctrica é uma função da tensão aplicada nos seus terminais. Isto é, à medida que a diferença de potencial sobre o varístor aumenta, sua resistência diminui.  200px-Varistor_S14K385_photo

     Os VDRs são geralmente utilizados como elemento de protecção contra transientes de tensão em circuitos, tal como em filtros de linha. Assim eles são montados em paralelo com o circuito que se deseja proteger, por apresentarem uma característica de "limitador de tensão", impedindo que surtos de pequena duração cheguem ao circuito, e no caso de picos de tensão de maior duração, a alta corrente que circula pelo dispositivo faz com que o dispositivo de protecção (disjuntor ou fusível), desarme, desligando o circuito da fonte de alimentação.

Aplicação: Surge protector

Observações e cuidados na aplicação dos varistores

O varistor possui um limite de conversão de energia eléctrica em térmica, normalmente medido em J joules. Uma vez excedido esse limite, ou seja, por algum motivo a sobretensão continue por muito tempo, o varistor queima.images5

Para evitar a queima do varistor por exposição a uma sobretensão acima do tempo suportável, são utilizados fusíveis de protecção, os quais interrompem o circuito (queimam) antes que ocorram danos àquele componente.

Algumas pessoas acreditam que a presença dos varistores (MOV), dentro dos seus dispositivos de protecção contra surtos, já é suficiente para uma completa protecção contra os infortúnios do fornecimento de energia eléctrica, tais como surtos na rede de alimentação.

Infelizmente, um Varistor e outros tipos de supressores não fornecem protecção para os equipamentos quando as sobretensões são mantidas durante um tempo acima do permitido, já que o varistor tem um limite na transformação de energia eléctrica em energia térmica (Efeito joule). Isso resulta em queima do componente, podendo existir a possibilidade de início de fogo.

 

Source:  [Link] 

Ver também: 

Varistor

Voltage spike

Raio (meteorologia)

Lightning

Sprites:

Os sprites são fenômenos que ocorrem durante tempestades. Eles só são detectáveis do espaço. Um sprite é um raio peculiar. Forma-se no topo da nuvem (os raios típicos se formam na base), e têm carga positiva (os raios normais têm carga negativa). Partindo da nuvem, uma corrente positiva se dirige às cargas negativas que se acumulam no solo. Quando as encontra, o circuito se fecha e o raio aparece. Também podem ocorrer nas nuvens mais altas de Netuno.

Electromagnetic pulse (EMP):

  • A burst of electromagnetic radiation from an explosion (especially a nuclear explosion) or a suddenly fluctuating magnetic field.  The resulting electric and magnetic fields may couple with electrical/electronic systems to produce damaging current and voltage surges.   For a comprehensive assessment of likely damages to electronics equipment and electrical infrastructure, see the 2008 Critical National Infrastructures Report written by the EMP Commission of the U.S federal government.
  • A broadband, high-intensity, short-duration burst of electromagnetic energy.
  • Surge suppression Definition from PC Magazine Encyclopedia

    untitled

     

    terça-feira, 5 de maio de 2009

    PIC16F876A 0-500MHZ LCD RF Power Meter


    Este RF power meter usa o AD8307 da Analog Devices, usa o PIC16F876A e tem o display LCD 2x20. A sua gama de frequências é de 0 a 500MHz. 
    pm3-top-cvr-400 pm3-top-wocvr-400

    O display mostra mv, uw e dbm:
    milli-ug1 

    AD8307 Sensor Board:
    sensor-schematic

    RF Meter CPU Schematic:
    pm3a-schematic

    Source:
    PM3ADual Channel PIC16F876A 500MHZ LCD RF Power Meter With Data Logger

    Projecto original:
    Digital Wattmeter with AD8307, PIC16F876, LCD Display:

    miliwatt-sch1

     miliwatt-sch2

    Digital Wattmeter Software

    Software info / user guide for version 1.03A

    Ver também:

    Digital RF Wattmeter with LC Display - ELEKTOR.com October 2002

    quinta-feira, 2 de abril de 2009

    Very Accurate LC Meter based on PIC16F84A

    Este é um dos mais precisos e mais simples Medidores LC (indutância / capacidade) que pode encontrar,e pode ser construído facilmente. Este Medidor LC permite medir valores incrivelmente pequenos de indutância de 10nH a 1000nH, de 1uH a 1000uH, de 1mH a 100mH e de capacidade de 0.1pF até 900nF. O circuito do Medidor LC utiliza um sistema de escala automática de modo a que você não precisa perder tempo a escolher as gamas manualmente. Outra função é o interruptor "Zero Out" que irá fazer o “reset” da leitura inicial da indutância / capacidade, de modo que as leituras finais do Medidor LC sejam tão precisas quanto possível.

    LC_Meter

    LCM

    Very Accurate LC Meter based on PIC16F84A - [Link]

    Projecto original:
    A Surprisingly Accurate Digital LC Meter - [Link]

    Ver também:
    Pretty Good LC Meter Project Based on the AVR - [Link]

    An Even Better LC Meter Based on the AVR ATTINY861 - [Link]

    domingo, 15 de março de 2009

    An ethernet weather station

    Usando um ‘add-on’ para o já existente servidor AVR Ethernet, vamos construir uma estação meteorológica. Isto é: Uma estação meteorológica com um servidor Web integrado. Os artigos relacionados que descrevem como construir o servidor Web AVR estão aqui:
    1. An AVR microcontroller based Ethernet device
    2. HTTP/TCP with an atmega88 microcontroller (AVR web server)
    Os componentes para a construção desta estação meteorológica podem ser encomendados a partir de http://shop.tuxgraphics.org/·
    O sistema é modular. Você pode construir uma estação meteorológica Ethenet pura ou uma estação meteorológica Ethenet com um display LCD adicional.

    Ver: http://tuxgraphics.org/electronics/200704/article07041.shtml

    Sensors

    My original plan was to have sensors for temperature, air pressure and wind. I started a prototype and it worked very well except for the wind measurement part. I have written a separate article about it: wind-vane-ver01.shtml. I plan to improve the wind measurement hardware and add it at a later point in time.

    For now the weather station has 2 temperature sensors and an air pressure sensor. It works reliable and precise even after several month of testing.

    For the sensors we will use:
    • For temperature measurements: LM335. This sensor is cheap and has a linear curve over a wide temperature range. This will give us very accurate temperature readings over a wide range. The accuracy will be almost constant over the whole range.

    • A Motorola/Freescale MPX4115A absolute air pressure sensor. This sensor is already calibrated at production time. The MPX4115A is not made for out-door use but that is not a problem. The circuit can be in a save and dry location inside the house as the air pressure is exactly the same inside and outside the house.

    The weather station circuit diagram (add-on board)

     [weather station circuit with LCD, top view]

    AVR microcontroller based ethernet device / web server

    Como construir um dispositivo Ethernet baseado num microcontrolador AVR da Atmel e no controlador Ethernet ENC28J60.articletitle_th

    A Ethernet tem sido, tradicionalmente, uma interface bastante complexa. Todos os chips Ethernet tinham, até hoje, 100 ou mais pinos, eram difíceis de encontrar em pequenas quantidades e difíceis de usar com um pequeno microcontrolador com pouca memória. A Microchip mudou o mundo com seu novo chip Ethernet ENC28J60!

    O ENC28J60 é um pequeno chip com apenas 28 pinos e tem uma interface SPI que é fácil de usar a partir de qualquer microcontrolador.

    Isto abre um mundo completamente novo de aplicações. Você pode facilmente construir pequenos dispositivos que podem ser distribuídos por toda a casa e simplesmente ligado à Ethernet.

    Tudo pode ser facilmente ligado via Ethernet. A distância já não é um factor limitativo.

    Todos os componentes de hardware estão disponíveis a partir de shop.tuxgraphics.org. O software e os circuitos estão disponíveis gratuitamente (GPL V2 license).

    Há artigos sobre o uso do ENC28J60 juntamente com um Microcontrolador AVR nas páginas da Tuxgraphics.

    O primeiro artigo, Um dispositivo Ethernet baseado num Microcontrolador AVR , está centrado no tema muito básico: descrição do ENC e ligação básica.

    schematic_drawing

    O segundo introduz um simples servidor HTTP, construído com o ATMega88 e o ENC28J60: HTTP / TCP com um microcontrolador atmega88 (AVR web server).eth-remote-device
    São descritos neste artigo a máquina de estados TCP e os princípios de HTTP.

    avrethlcd
    O terceiro artigo sobre AVR e Ethernet nas páginas da Tuxgraphics é: Um display LCD com interface ethernet. O objectivo é simples e directo: Ligar um módulo LCD 16x2 ao PC via Ethernet.

    Guia de Soldadura

    Primeiro, necessita de um ferro de soldar (cerca de 25W), solda 60/40 e um suporte para o ferro de soldar. Tente não respirar os fumos da solda. Trabalhe numa área bem ventilada. Antes de soldar, deve estanhar a ponta do ferro. Basta aguardar que o ferro de soldar aqueça, aplicar uma camada de solda na ponta, e limpe-a com uma esponja molhada. Agora, para soldar os componentes na placa, cortar os fios no tamanho adequado. Introduza os componentes através dos buracos respectivos e dobre-os para que fiquem seguros. Coloque a ponta do ferro de soldar de modo que ela toque o fio e o cobre, ao mesmo tempo. Em seguida, aplique a solda no fio (e não sobre a ponta do ferro de soldar).

    A seguir um exemplo de como a junta de soldadura deve parecer:

    joints

    sdr_fig3

    Quantidade de solda a ser usada
    a) Mínima quantidade de solda
    b) Óptima
    c) Solda Excessiva

    Um guia de soldadura mais extensivo pode ser encontrado aqui: http://www.kpsec.freeuk.com/solder.htm

    Source: [Link]

    Actualização em 17-05-2009:

    Considerações de Saúde

    Quando você compra um ferro de soldar na Califórnia, você irá encontrar o seguinte impresso na caixa:

    Warning: This product, when used for soldering and similar applications, produces chemicals known to the State of California to cause cancer and birth defects or other reproductive harm.

    As pessoas que não são da Califórnia podem ficar chocados com estas linhas, mas você deve saber que todos os produtos que contenham certas substâncias químicas classificadas têm isto impresso. Você encontra uma frase semelhante no Vinagre Balsâmico italiano original se o comprar na Califórnia.   Isso naturalmente não significa que não deve levá-lo. Está lá por um bom motivo.

    dust-masks_th

    Porquê este aviso?   Há aqui duas substâncias principais que podem causar problemas. Uma delas é o chumbo na solda.   Você pode eliminá-lo usando fio de solda livre de chumbo.   A outra substância é a resina ou o fluxo da solda, que se encontra no interior do fio de solda.   Este fluxo é necessário para proteger a solda do oxigénio. O fluxo vai correr em cima da solda líquida e, assim, evita que o oxigénio do ar provoque uma reacção química com o metal líquido.   Este fluxo da solda também irá evaporar um pouco o que provoca muitas vezes fumos visíveis.

    Em geral, você terá a sua cara perto e ligeiramente acima do ponto onde solda.   Isso acontece porque você querer ver o que está a soldar. Isto significa, infelizmente, que a maior parte dos fumos vão direito ao seu nariz.
    O que fazer?   A maioria do fluxo de soldar evaporará quando aquecido e torna-se novamente sólido quando arrefece.  Formam-se partículas finas no ar.   Uma máscara simples de poeira oferecer aqui uma boa protecção.
    É possível também comprar ventoinhas com filtro que sugam alguns dos fumos, mas eu prefiro uma máscara simples e de tempos a tempos a ventilação da sala com ar fresco.

    Source: [Link] 

    sábado, 14 de março de 2009

    USBtinyISP

    O USBtinyISP é um programador USB, 'open-source',  para microcontroladores  AVR da Atmel. Usa o interface SPI. É de baixo custo, fácil montagem e funciona com o avrdude e é compatível com o AVRStudio. Funciona em Window, Linux e MacOS X. Foi criado pela www.ladyada.net baseado no USBtiny.

    Pode-se construir o programador usando o esquema e o firmware disponibilizados, ou comprar o kit da Adafruit

    USBtinyISP cables_t

     

     

     

    USBtinyISP:  [Link]    -Files, drivers, and source: [Link]

     
    View My Stats