collapse

* Links de Robótica

* Posts Recentes

Ideias para construir um quadrúpede simples por Njay
[Hoje às 03:04]


Ajuda com TRIAC por senso
[17 de Novembro de 2017, 18:00]


TV LG White Screen por almamater
[15 de Novembro de 2017, 08:37]


Pergunta sobre prototipagem ( Pesquisa ) por luisjustin
[14 de Novembro de 2017, 23:22]


Medir Agua que está no Poço por Njay
[14 de Novembro de 2017, 13:28]


Amplificador audio por beirao
[12 de Novembro de 2017, 23:43]


Power_OK Enermax por edeweld
[12 de Novembro de 2017, 17:15]


Driver motor por beirao
[11 de Novembro de 2017, 17:40]


Preciso de uma fonte de corrente constante ? por samc
[09 de Novembro de 2017, 14:18]


Pressoestato 0-10V por artur36
[07 de Novembro de 2017, 23:22]

Autor Tópico: Funciona no PROTEUS mas não no real  (Lida 6051 vezes)

0 Membros e 2 Visitantes estão a ver este tópico.

Offline Dave

  • Mini Robot
  • *
  • Mensagens: 368
    • "O Engenhocas"
Funciona no PROTEUS mas não no real
« em: 09 de Outubro de 2010, 22:57 »
Olá a todos!

Sou um iniciante em PIC's e por isso espero que o registo neste fórum me dê uma ajuda nas minhas dúvidas...


Este é o meu problema:

Estou a treinar a minha programação de conversores ADC de PIC's.
Um circuito bastante simples é o de ligar um potenciómetro (como divisor de tensão) e quando a tensão de entrada no PIC é superior a 2,5V liga um led.

Simples... e até funciona no Proteus, mas na realidade não faz nada....

Citar
#include <16f88.h>
#device ADC=10
#use delay (clock=20000000)
#fuses HS, NOWDT, NOPROTECT, BROWNOUT, PUT
#use standard_IO (A)

main()
{

int valor;

setup_comparator(NC_NC_NC_NC);
setup_ADC(ADC_CLOCK_INTERNAL);
setup_ADC_ports(64|VSS_VDD);
set_adc_channel(6);


while (true)
{
   valor=read_adc(7);
   if(valor>500)
   output_high(pin_A0);
   else output_low(pin_A0);
   delay_ms(500);
}
}

Quanto ao Vref (+ e -) não ligo a nada... pelo que penso que o pic "entende" como VSS_VDD.

Deixo aqui a imagem do simulador e os erros mostrados pelo mesmo, embora a simulação avance e consiga fazer o pretendido (acender led quando uma determinada porta está a mais de 2,5V).




Amigos, onde está o meu erro?

Na montagem ou no código?
Alguma solução/explicação para isto?

Como já disse noutros tópicos, estou-me a iniciar com PIC's, mas tenho vontade em aprender mais!


PS: O compilador utilizado é o CCS.

Obrigado.

Cumps
David Martins
Eng. Electrotécnica e de Computadores, UBI

Offline beirao

  • Mini Robot
  • *
  • Mensagens: 1.493
Re: Funciona no PROTEUS mas não no real
« Responder #1 em: 10 de Outubro de 2010, 00:50 »

Onde é que defines o tempo de aquisição/conversão ?
"O único lugar onde o sucesso vem antes do trabalho, é no dicionário" - Albert Einstein

Offline Dave

  • Mini Robot
  • *
  • Mensagens: 368
    • "O Engenhocas"
Re: Funciona no PROTEUS mas não no real
« Responder #2 em: 10 de Outubro de 2010, 00:58 »
Peço desculpa, o código em cima não é o correcto...

Este é:
Citar
#include <16f88.h>
#device ADC=10
#use delay (clock=20000000)
#fuses HS, NOWDT, NOPROTECT, BROWNOUT, PUT
#use standard_IO(A)

void main()
{

int16 valor;

setup_ADC(ADC_CLOCK_DIV_64);

setup_ADC_ports(64);

set_adc_channel(6);

delay_ms(1);

while (true)
{
   valor=read_adc();

   delay_ms(10);

   if(valor>500)
   {
   output_high(pin_A0);
   delay_ms(100);
   }
   else output_low(pin_A0);

   delay_ms(250);

Agora o problema é que só funciona tudo se tiver a tocar com o dedo na parte descarnada no fio positivo ou do fio negativo da fonte de alimentação.

Como fonte utilizo um circuito da velleman que mediante um potenciómetro permite-me variar a tensão de saída...
 
Para filtrar tenho na placa um condensador de 1uF, mas mesmo assim continua tudo sem funcionar... só quando toco com o dedo nos ditos fios....
Quando coloco simplesmente led's a piscar, tudo funciona bem sem grandes preocupações..


cumps
David Martins
Eng. Electrotécnica e de Computadores, UBI

Offline Dave

  • Mini Robot
  • *
  • Mensagens: 368
    • "O Engenhocas"
Re: Funciona no PROTEUS mas não no real
« Responder #3 em: 10 de Outubro de 2010, 01:08 »
Será alguma coisa relacionada com os fuses?

Estou mesmo pasmado com isto...


cumps
David Martins
Eng. Electrotécnica e de Computadores, UBI

Offline GnGz

  • Mini Robot
  • *
  • Mensagens: 665
Re: Funciona no PROTEUS mas não no real
« Responder #4 em: 10 de Outubro de 2010, 13:23 »
Nao sei se sera o lugar indicado ... mas tenho uma duvida no proteus ... eu executo um programa blink normal ... mas demora muito a piscar...

Offline Dave

  • Mini Robot
  • *
  • Mensagens: 368
    • "O Engenhocas"
Re: Funciona no PROTEUS mas não no real
« Responder #5 em: 10 de Outubro de 2010, 13:31 »
Amigo, no meu funciona bem.... que tempos está a usar no pisca-pisca?


hug
David Martins
Eng. Electrotécnica e de Computadores, UBI

Offline FET_Destroyer

  • Mini Robot
  • *
  • Mensagens: 213
    • Fet Destroyer
Re: Funciona no PROTEUS mas não no real
« Responder #6 em: 10 de Outubro de 2010, 13:31 »
Nao sei se sera o lugar indicado ... mas tenho uma duvida no proteus ... eu executo um programa blink normal ... mas demora muito a piscar...

Muitas vezes o proteus não corre em tempo real. Se la vires no proteus tens la um stopwatch.
Tens que te guiar por isso e nao pelo tempo que te parece a ti. Se leres os warnings do proteus, ele diz que não está a correr em tempo real devido a carga do cpu.


Offline GnGz

  • Mini Robot
  • *
  • Mensagens: 665
Re: Funciona no PROTEUS mas não no real
« Responder #7 em: 10 de Outubro de 2010, 13:32 »
Mas ta ... so que o led nao me faz blink de 1 em 1 segundo ... demora

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.400
  • Helpdesk do sitio
Re: Funciona no PROTEUS mas não no real
« Responder #8 em: 10 de Outubro de 2010, 13:39 »
Na pasta exemplos do CCS tens lá exemplos de como configurar e usar a adc, usa esse programa e vê se funciona.
Estás a dar 5 volts estaveis ao teu micro, quanto ao Vref acho que o melhor é leres o datasheet do micro para saber como e onde o deves ligar para tudo funcionar.
Avr fanboy

Offline Dave

  • Mini Robot
  • *
  • Mensagens: 368
    • "O Engenhocas"
Re: Funciona no PROTEUS mas não no real
« Responder #9 em: 10 de Outubro de 2010, 13:48 »
OK. Vou experimentar.

No entanto, penso que algo se passa com a minha placa de testes... porque tudo funciona bem, mas só se o meu dedo estiver a tocar no circuito (polo positivo, polo negativo, AN6, reset, ...).


cumps
David Martins
Eng. Electrotécnica e de Computadores, UBI

Offline Dave

  • Mini Robot
  • *
  • Mensagens: 368
    • "O Engenhocas"
Re: Funciona no PROTEUS mas não no real
« Responder #10 em: 10 de Outubro de 2010, 13:55 »
Mais uma conclusão...

Se ligar um fio do pólo negativo à chapinha protectora da breadboard (placa que fica na base) fica a funcionar bem... do que será isto? Haverá algum tipo de "carga" na placa que está a causar isto?

Curioso....


PS: AHAHAAH e não é que está a funcionar mesmo!!! Já desmontei e montei tudo outra vez e só funciona se o fio estiver ligado à chapa na base da placa de testes  ;D  :o :o

hug
« Última modificação: 10 de Outubro de 2010, 14:13 por Dave »
David Martins
Eng. Electrotécnica e de Computadores, UBI

Offline GnGz

  • Mini Robot
  • *
  • Mensagens: 665
Re: Funciona no PROTEUS mas não no real
« Responder #11 em: 10 de Outubro de 2010, 14:04 »
Mostra o circuito em schematic...

Offline Dave

  • Mini Robot
  • *
  • Mensagens: 368
    • "O Engenhocas"
Re: Funciona no PROTEUS mas não no real
« Responder #12 em: 10 de Outubro de 2010, 14:12 »
Cá está.




hug
David Martins
Eng. Electrotécnica e de Computadores, UBI

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.642
    • Electronic Gear for Musicians
Re: Funciona no PROTEUS mas não no real
« Responder #13 em: 10 de Outubro de 2010, 14:16 »
troca de protoboard... daquelas só de plastico

temos q trabalhar com boas ferramentas, pq senao não sabemos se é do rabo ou das calças  ;D

Offline Dave

  • Mini Robot
  • *
  • Mensagens: 368
    • "O Engenhocas"
Re: Funciona no PROTEUS mas não no real
« Responder #14 em: 10 de Outubro de 2010, 14:26 »
troca de protoboard... daquelas só de plastico

temos q trabalhar com boas ferramentas, pq senao não sabemos se é do rabo ou das calças  ;D

Passo a explicar o motivo de tanta admiração da minha parte...

A minha placa é igual à da imagem. Muitos aqui devem ter uma igual... e por baixo tem uma película que cola e só depois a tal chapa...

Já me certifiquei e nada faz contacto com com essa chapinha... para isso o plástico da breadboard tinha de estar furado, assim como a fita aderente para depois algo tocar na base da placa.

O circuito está a funcionar... mas de tirar o fio que está a fazer contacto ente o pólo negativo da placa e a chapinha da base o circuito para, embora tenha alimentação....

David Martins
Eng. Electrotécnica e de Computadores, UBI