Baixe o app para aproveitar ainda mais
Prévia do material em texto
2ª. Prova NP-217 - Eletrônica Digital II Prof. Evandro Luís Brandão Gomes 24/11/2015 RESPOSTAS OBSERVAÇÕES: - Prova sem consulta, com duração de 90 minutos; - Valor: 100 pontos - Não é permitido o empréstimo de qualquer tipo de material; - BOA PROVA!!! 1ª QUESTÃO (20 pontos) De acordo com o diagrama de blocos abaixo, que descreve um sistema de controle, e seus estados de funcionamento, pede-se: CH1 � 0 = Ligada, 1 = Desligada Led1 � 1 = Aceso, 0 = Apagado CH2 � 1 = Ligada, 0 = Desligada Led2 � 0 = Aceso, 1 = Apagado a) Desenhe abaixo, o circuito elétrico completo para o funcionamento do projeto de acordo com as especificações acima. 2ª. Prova NP-217 - Eletrônica Digital II Prof. Evandro Luís Brandão Gomes 24/11/2015 b) Escreva o programa em linguagem C, para que quando a CH1 for ligada acenda o LEd1 e depois, verifique o estado da CH2. Se esta estiver ligada, o LED2 ficará apagado, caso contrário ficará aceso. Quando a CH1 for desligada, os dois Leds devem ficar apagados. 2ª. Prova NP-217 - Eletrônica Digital II Prof. Evandro Luís Brandão Gomes 24/11/2015 2ª QUESTÃO (30 pontos) Em um determinado sistema desenvolvido com a plataforma Arduino, deve ser incluída uma função de interrupção que utilizará o canal 1 e ficará sempre habilitada, sendo que neste canal está ligado um sensor de presença que em seu estado normal fica com nível lógico 0 em sua saída e quando for detectado algum movimento no ambiente este vai para nível lógico 1. Quando esta situação ocorrer, a rotina de interrupção deverá ser chamada e ela deverá durante 1 segundo gerar um sinal PWM de 40% de Duty Cycle na porta digital 7 e também acionar um relé que está ligado na porta digital 10 (1=liga relé, 0=desliga relé). Após o tempo de 1 segundo tanto a saída PWM quanto o Relé devem ser desligados. Sabendo destes requisitos, escreva abaixo todos os comandos necessários para a correta implementação desta rotina de interrupção. ... void ISR_INT1(); //protótipo da função de interrupção ... void setup() { ... ... attachInterrupt(1,ISR_INT1, RISING); interrupts(); } void loop() { ... ... } void ISR_INT1() { analogWrite(7,102); //DC=40% digitalWrite(10,HIGH); //liga Relé delay(1000); analogWrite(7,0); //DC=0% digitalWrite(10,LOW); //delisga Relé } 2ª. Prova NP-217 - Eletrônica Digital II Prof. Evandro Luís Brandão Gomes 24/11/2015 3ª QUESTÃO (30 pontos) Em um determinado sistema desenvolvido com a plataforma Arduino, deve ser acrescentado um temporizador de 500ms e uma interrupção associada a este temporizador. Na rotina de interrupção, somente a cada 5 segundos, deverá acorrer as seguintes tarefas nesta sequência: desabilitar a interrupção, parar o temporizador, fazer um led conectado na porta digital 5 piscar com o tempo de 700ms aceso e 900ms apagado, depois o temporizador deve ser religado e a interrupção habilitada. Sabendo destes requisitos, escreva abaixo todos os comandos necessários que devem ser incluídos para a correta implementação destes requisitos. ... void ISR_TIMER(); //protótipo da função de interrupção int CONT; //contador de tempo ... void setup() { ... ... Timer1.inicialize(500000); //500ms Timer1.attachInterrupt(ISR_TIMER); Timer1.start(); CONT=0; } void loop() { ... ... } void ISR_TIMER() { CONT++; if (CONT >= 10) { CONT=0; noInterrupts(); Timer1.stop(); digitalWrite(5,HIGH); delay(700); digitalWrite(5,LOW); delay(900); Timer1.resume(); //pode ser restart() interrupts(); } } 2ª. Prova NP-217 - Eletrônica Digital II Prof. Evandro Luís Brandão Gomes 24/11/2015 4ª QUESTÃO (20 pontos) Em um determinado sistema desenvolvido com a plataforma Arduino, é feito a leitura de um sensor em sua entrada analógica 5. No programa existe uma rotina de interrupção que é disparada a cada 10 segundos para fazer a leitura deste sensor e gerar uma saída PWM na porta digital 10, de acordo com as seguintes condições: Sensor Duty Cycle 0V até 2V 20% > 2V até 3V 40% > 3V até 5V 80% Pede-se: - Escreva abaixo a rotina de Interrupção. - Esta rotina não deve ser interrompida durante sua execução. - O sinal PWM deve ser mantido no estado da tabela acima durante 2 segundos, após esse tempo ele passa para 0% de Duty Cycle. ... ... void SENSOR() { float TENSAO; noInterrupts(); TENSAO = analogRead(5) * 0.00488; //tensão na entrada analógica if (TENSAO <= 2) analogWrite(10,51); //DC=20% else if (TENSAO <=3) analogWrite(10,102); //DC=40% else analogWrite(10,204); //DC=80% delay(2000); analogWrite(10,0); //DC=0% interrupts(); } 2ª. Prova NP-217 - Eletrônica Digital II Prof. Evandro Luís Brandão Gomes 24/11/2015 ANEXO 1 – ARDUINO Funções da Biblioteca do Arduino: pinMode(porta, modo); digitalWrite(porta, valor); var = digitalRead(porta); var = analogRead(porta); analogWrite(porta, valor); interrupts(); noInterrupts(); attachInterrupt(canal, função, modo); detachInterrupt(interrupt); delay(tempo); Timer1.initialize(microseg); Timer1.start(); Timer1.stop(); Timer1.restart(); Timer1.resume(); Timer1.attachInterrupt(função); Timer1.detachInterrupt(); ANEXO 2 – Microcontrolador ATmega328p Registradores de Configuração: DDRx(bit n) = 1 � Pino n configurado como Saída. DDRx(bit n) = 0 � Pino n configurado como Entrada. PORTx(bit n) = 1� o pino de saída vai para 1 PORTx(bit n) = 0� o pino de saída vai para 0 PORTx(bit n) = 1� o resistor de Pull-up é ligado neste bit PORTx(bit n) = 0� o resistir de Pull-up é desligado neste bit leitura de PINx(bit n) = 0� bit lido na porta é 0 leitura de PINx(bit n) = 1� bit lido na porta é 1 Funções da Biblioteca: _delay_ms(tempo);
Compartilhar