Ploter 10 Hz

domingo, 24 de janeiro de 2010

Osciloscopio 10Hz


Um Osciloscópio de resposta 10Hz por menos de R$5,00 (Reais)


outubro 2008 por alvaro luiz







Um simples circuito de R$4,00, que é o preço que paguei no PIC12F675 na Rua Santa Efigênia em São Paulo.
O Circuito tem a finalidade de converter a entrada analógica aplicada no Pino 3 em um valor digital de 8 bits (0x00--0xFF) e transmiti-lo serial (RS232-9600bps - pino2) para a entrada COM1 do seu PC
(COM1 é obrigatório).
Fica convertendo e transmitindo sem parar, em torno 10 vezes por segundo.
Os resistores de 220R tem a finalidade de proteção de sobre corrente, o LED pisca toda vez que ocorrer a comunicação.

É uma ferramenta interessante para se medir fenômenos lentos (inferior a 20Hz), como o levantamento do comportamento de um forno, balança, pressão, vazão, etc. Tudo que for lento. Podemos de posse do ploter, fazer estudos comentários e apresentar as pessoas. Tudo por um preço inferior a R$4,00, vale a pena.

O circuito poderá ser montado dentro uma caixa, com 3 pilhas alcalinas tipo AAA, e chave on/off. O led pisca para não esquecermos o conversor ligado. O software que roda no PC, que recebe serial e apresenta no video e o Ploter.exe:
Tecle aqui e pegue-o em zip

O software que você deve gravar no PIC12F675 (sci675.hex): esta aqui em formato zip

Apresento um exemplo de ensaio com balança que acabei de fazer:

No exemplo acima, foi utilizado um frasco de plástico (500ml) com água, com pequena torneira, onde foi aberta e estudou-se o comportamento do mesmo, Foi provocada oscilações, dando pequenos puxões do frasco (saco plastico), para ver seu comportamente. Isto está sendo muito utíl, poís estou conseguindo avaliar o software do microcontrolador, para que ele filtre estas perturbações e forneça o valor médio real, o mais puro possível.

Vale dizer que a balança também fazia parte do ensaio, foi contruida com a figura geometrica "S" e com sensores tipo "extensometros de resistencia eletrica" ou "StrainGauge"e com amplificador industrial com alto ganho, que faleremos sobre isto numa próxima oportunidade. Tem uma foto de um ensaio feita em 2005 aqui.

O botão "Clean" limpa e inicializa o cursor a esquerda, depois temos o ajuste da base de tempo default é 100ms, pode ser alterada até 1000ms só começa a operar no novo valor após acionar "enter" o "stop/start" e o "close" fecha o aplicativo.
Acima a direita temos a posição do mouse dentro do quadro, a esquerda o valor recebido serial em hex e decimal. Podemos traçar riscos, horizontais ou verticais, para destacar algum nível de referência, em preto ou vermelho escolha em RiscoRed e o risco, segure o botão esquerdo mouse e arraste-o, quando soltar o botão aparecerá o risco.


Tudo aqui é ensaios e estudos, é claro que são ferramentas que estão em constante modificações, com certeza o mês que vem terá uma nova versão.

Estas ferramentas surgem conforme as necessidades dos projetos, veja que um oscilóscopio como este teria que ter memória digital, claro que um HP ou Tektronix não tem comparação em tecnólogia, mas não esqueçamos que no preço também, mais de R$5000,00 a unidade, e não justifica este custo para tirar algumas dúvidas, graças a Deus fui agraciado com esta brilhante idéia. Valeu a pena!!!

É um prazer saber que estou sendo útil para Você!!!

Bons estudos e ensaios, são meus votos.

Voltar para o principal






; ideia para o desenvolvimento em assembler
; opera com RC interno em 4MHz
; colocado aqui em fev 2010
; por alvaroluiz2@yahoo.com.br
; ----------------------------------------

; Comunicação Rx/Tx com o 12F675
; --------------------------------
; ___ ___
; vcc-| |_| |-gnd
; <--- (tx)gp5-| 12F675 |-gp0
; --->Ana3 gp4-| |-gp1
; gp3-|_________|-gp2
;
; se desejar pode colocar um led em serie com 1K em gp2
; ================================================================
nolist
include "p12f675.inc"
list P=12F675

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _CPD_OFF
; -----------------------------------
status equ STATUS
z equ Z
c equ C
; -----------------------------------
vh equ 0x20
vl equ 0x21
vxh equ 0x22
vxl equ 0x23

rsl equ 0x22
rsh equ 0x23
dado equ 0x24
conta equ 0x25
timer equ 0x26
; ---------------------------------------
cblock 0x70
ra, rb, rc, rd, re, rf, rg, ria,
rib, ric, rid, wr, st, fsrr,x1, x2
endc
; --------------------------------------
;
org 0
goto inicio ;start
; =========================================
inicio:
bcf STATUS,RP0 ;bank 0
call H'3ff' ;ajustar o oscilador interno
bsf STATUS,RP0 ;com o valor de fábrica
movwf OSCCAL
; ------------------------------
bcf STATUS,RP0
movlw 0x07 ;comparador off
movwf CMCON
; -------------------------------
bsf STATUS,RP0
movlw b'01101000' ;so an3
movwf ANSEL
bcf STATUS,RP0
movlw b'10001101' ;hab an3
movwf ADCON0
bsf ADCON0,1
; -------------------------------
bsf STATUS,RP0 ;bank 1
movlw b'11011001'
movwf TRISIO

movlw b'10000111' ;prescaler de 111 = 256
movwf OPTION_REG

bcf STATUS,RP0 ;garantir bank 0
; bsf INTCON,T0IE
; bsf INTCON,GIE ;habilitar isr geral
; -----------------------------------------
; não foi habilitado a interrup então fique esperando vencer o tempo
; testando o bit T0IF de INTCON
; qdo T0IF=1 venceu o tempo então execute o serviço, lendo a entrada
; analogica (8bits) e tramsmita este valor para serial 9600bps
; =================================================================
loop:
btfss INTCON,T0IF
goto loop

bcf INTCON,T0IF ;tirar o aviso do tempo vencido

call GetAna ;pegar o valor analogico
call SendAna ;transmiti-lo

movlw b'00000100' ; piscar led
xorwf GPIO,f

goto loop
; -----------------------------------
SendAna:
movf vxl,w
movwf dado
call tx
return
; -----------------------
GetAna:
btfsc ADCON0,GO_DONE
goto GetAna ;(adcó nzero) if bit=1 wait

movf ADRESH,w
movwf vh

bsf STATUS,RP0
movf ADRESL,w
bcf STATUS,RP0
movwf vl

bsf ADCON0,GO_DONE

movf vh,w
movwf vxh
movf vl,w
movwf vxl

rrf vxh,f ;convertion 10bits
rrf vxl,f ;mas só interessa 8bits
rrf vxh,f ;então aqui dividimos por 4 os 10 bits da conversão
rrf vxl,f ;loga ficamos com resultado de 8 bits

return
; ---------------------------
tx:
movlw 0x09
movwf conta
movlw .40
bsf GPIO,5 ;start bit
movwf timer
tx2:
decfsz timer,F
goto tx2

bcf status,c
rrf dado,F
btfss status,c
goto tx3
bcf GPIO,5
goto tx4
tx3:
bsf GPIO,5
tx4:
movlw .38
movwf timer
decfsz conta,F
goto tx2

bcf GPIO,5 ;stop bit
movlw .100
movwf timer
tx5:
decfsz timer,F
goto tx5
return
;=================
end





Até a próxima.


Voltar para o principal

alvaroluiz2@yahoo.com.br


Seguidores