TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Motor de passo

Por:   •  19/11/2015  •  Projeto de pesquisa  •  2.459 Palavras (10 Páginas)  •  278 Visualizações

Página 1 de 10

UNIVERSIDADE FUNDAÇÃO SANTO ANDRÉ

FACULDADE DE ENGENHARIA "ENGENHEIRO CELSO DANIEL"

ABNER RA:715115

FELIPE FEMINA RA:715246

ATIVIDADE DE MICROCONTROLADORES I

SANTO ANDRÉ

2015

Sumário

Fluxograma        

Programa Comentado        

Planilha de Teste de verificação        12

Lista de Dificuldade        12

Controle On-Off        13

Conclusão        16


Fluxograma

[pic 1]


Programa comentado

/*

 * File:Controle de temperatura.c

 * Author: Felipe Femina e Abner de Souza

*

 * Created on 5 de Novembro de 2015

 */

#include

#include

#include                 //cabeçario padrão

#include

#include "ADC_LibV1.h"

#include "LCD_8bitsV1.h"

#pragma config OSC=HS, PWRT=ON,WDT=OFF, MCLRE=OFF, DEBUG=OFF, LVP=OFF , BOREN=OFF

#define _XTAL_FREQ 8000000

void atraso50ms (int vezes);

void main(void) {

char    Mens_L1[17] = {"LIC:            "}; //*indica no display o valor do tripot ANAL0

char    *bufpointer;

int     LIC;  

int     status;

float   LICF;

int     LSC;

float   LSCF;

int     Temp;

floatTempFloat;

   

    TRISC=0b00000000;

    TRISB=0b11111111;  

    PORTC=0b00000000;

ADC_Init(0); // Canal 0 ligado

while(1){

        LIC = ADC_Get_Sample();

        LICF = (float)LIC/10.23;

bufpointer = ftoa(LICF, &status);

        Mens_L1[5] = bufpointer[0];

Mens_L1[6] = bufpointer[1];

Mens_L1[7] = bufpointer[2];

Mens_L1[8] = bufpointer[3];

Mens_L1[9] = bufpointer[4];

IniciaLCD();

EscStringLCD(Mens_L1);

atraso50ms(20);

        //Assim que o botao RB3 for apertado, ele comoça a ler o Anal1 (limite superior)

if(PORTBbits.RB3==0){

char    Mens_L1[17] = {"LSC:            "};

ADC_Init(1); // Canal 1 ligado

while(1){

        LSC = ADC_Get_Sample();

        LSCF = (float)LSC/10.23;

bufpointer = ftoa(LSCF, &status);

        Mens_L1[5] = bufpointer[0];

        Mens_L1[6] = bufpointer[1];

        Mens_L1[7] = bufpointer[2];

        Mens_L1[8] = bufpointer[3];

        Mens_L1[9] = bufpointer[4];

IniciaLCD();

EscStringLCD(Mens_L1);

atraso50ms(20);

if(PORTBbits.RB4==0){

char    Mens_L1[17] = {"Temp:           "}; // batao RB4 acionado começa a ler a Temperatura

ADC_Init(2); // Canal 2 ligado ao LM35

while(1){

        Temp = ADC_Get_Sample();

TempFloat = (float)Temp*(500.0/1023.0);

bufpointer = ftoa(TempFloat, &status);

        Mens_L1[6] = bufpointer[0];

        Mens_L1[7] = bufpointer[1];

        Mens_L1[8] = bufpointer[2];

        Mens_L1[9] = bufpointer[3];

        Mens_L1[10] = bufpointer[4];

IniciaLCD();

EscStringLCD(Mens_L1);

atraso50ms(20);

if(TempFloat

            PORTCbits.RC5=1;

            PORTCbits.RC2=0;

           }

if(TempFloat> LSCF){  //compara a temperatura  com o limite superior de controle

            PORTCbits.RC5=0;

            PORTCbits.RC2=1;

        }

    }

        }

        }

        }

    }

return;

}

void atraso50ms (int vezes)

{

int i;

for( i = 1; i <= vezes; i++)

{

         __delay_ms(50);

       }

}

ADC_LibV1

#include

#include

#include

#include

voidADC_Init(unsigned short canal)

{

  ADCON1 = 0b00001100;

    // bits54   = 00 Vref-(VSS) e Vref+(VDD)

    // bits3210 = 1100 Analógicos AN0, AN1 e AN2

  ADCON2 = 0b10101001;

// bit7 = 1 Justificado à direita

    // bits654 = 101 Tempo de aquisição: 12TAD

// bits321 = 001 AD Clock Tempo Conversão = FOSC/8

switch(canal) {

case 0:

        ADCON0 = 0b00000001;

        // bits5432 = 0000 Canal 0 - AN0

        // Go/Done = 0

        // ADON = Ligado

break;

case 1:

        ADCON0 = 0b00000101;

        // bits5432 = 0001 Canal 1 - AN1

break;

case 2:

        ADCON0 = 0b00001001;

        // bits5432 = 0010 Canal 2 - AN2

break;

    }

}

intADC_Get_Sample (void)

{

intResult_AD;

    ADCON0bits.GO = 1;

...

Baixar como (para membros premium)  txt (11.5 Kb)   pdf (269.5 Kb)   docx (71.8 Kb)  
Continuar por mais 9 páginas »
Disponível apenas no TrabalhosGratuitos.com