Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Help with this project

Status
Not open for further replies.

soulraven

New Member
hello, I can help me with a project?
I want to make a minicomputer for my car and have the following functions
1. Water and oil temperature
2. Temperature inside the outside
3. 3 release of the order to relay a command electroventilatorul
4. Ceiling Ordered to Dimmer button doors
5. Contrast automatically display based on light
6. Tachometru
7. Mileage
8. Litrometru for reservoir
9. Flow meter for carburetor
10. A menu command for all the above

I use a 16F877A, that has two hardware PWM good DIMM.
a 16x2 display and the sensors DS18B20.

First I tried to start in proteous sensors, but I do not know how to start with the drivers. I did not read any temperature.

I know that the project is quite complex, and are at the beginning we never programmed PIC's, but I think with your help can be achieved.
Below is attached blueprint of the moment, and still missing many, but I come to ask, or if you have any ideas please help me

Excuse my poor engleaza
**broken link removed**
 
Your blueprint does not show. Please use "attachments".

Do you have a program running on the 16F877A? Do you have the display working?
 
Look blueprint and is not finished, there are several modules to implement.
Yes, the display is functional, can afiez text.
I thought to start the project with the temperature and then the restu and finally to solve and the menu and save in microcontroller.
I still think about how to make modules, each module to have in hand in a librarry
Ex
menu.h
menu.c
temperature.h
temperature.c
dimmer.h
dimmer.c​
 

Attachments

  • calculator.jpg
    calculator.jpg
    109.3 KB · Views: 275
Last edited:
This page has assembler code and instructions for using a PIC16 with the Dallas 1-wire interface (which is what the DS18B20 uses) -

**broken link removed**
 
I do not know asm,
C source?
I think we need to be a source of read sensors and one source to convert temperature
 
I do not know asm,
C source?
I think we need to be a source of read sensors and one source to convert temperature

What C compiler do you use? The mikroC and CSC C both have library functions that communicate with both i2c and 1wire sensor devices (mikroC have closed source libraries, CSC C have visible source libraries). I believe boostC also have library functions for communication with these devices. DS18B20 is 1wire and you will find examples on how to use it with both csc c and mikroC. If you use some other compiler, please let us know which one so we can be of more help.

example in mikroC
Code:
//  Set TEMP_RESOLUTION to the corresponding resolution of used DS18x20 sensor:
//  18S20: 9  (default setting; can be 9,10,11,or 12)
//  18B20: 12
const unsigned short TEMP_RESOLUTION = 12;

char *text = "000.0000";
unsigned temp;

void Display_Temperature(unsigned int temp2write) {
  const unsigned short RES_SHIFT = TEMP_RESOLUTION - 8;
  char temp_whole;
  unsigned int temp_fraction;

  // check if temperature is negative
  if (temp2write & 0x8000) {
     text[0] = '-';
     temp2write = ~temp2write + 1;
  }

  // extract temp_whole
  temp_whole = temp2write >> RES_SHIFT ;

  // convert temp_whole to characters
  if (temp_whole/100)
     text[0] = temp_whole/100  + 48;

  text[1] = (temp_whole/10)%10 + 48;             // extract tens digit
  text[2] =  temp_whole%10     + 48;             // extract ones digit

  // extract temp_fraction and convert it to unsigned int
  temp_fraction  = temp2write << (4-RES_SHIFT);
  temp_fraction &= 0x000F;
  temp_fraction *= 625;

  // convert temp_fraction to characters
  text[4] =  temp_fraction/1000    + 48;         // extract thousands digit
  text[5] = (temp_fraction/100)%10 + 48;         // extract hundreds digit
  text[6] = (temp_fraction/10)%10  + 48;         // extract tens digit
  text[7] =  temp_fraction%10      + 48;         // extract ones digit

  // print temperature on LCD
  Lcd_Out(2, 5, text);
}//~

void main() {
  ADCON1 = 7;                              // Configure AN pins as digital I/O
  Lcd_Init(&PORTD);                        // Lcd_Init_EP4, see Autocomplete
  Lcd_Cmd(LCD_CURSOR_OFF);
  Lcd_Out(1, 1, " Temperature:   ");
  // Print degree character, 'C' for Centigrades
  Lcd_Chr(2,13,223);
  Lcd_Chr(2,14,'C');

  //--- main loop
  do {
    //--- perform temperature reading
    Ow_Reset(&PORTE,2);            // Onewire reset signal
    Ow_Write(&PORTE,2,0xCC);       // Issue command SKIP_ROM
    Ow_Write(&PORTE,2,0x44);       // Issue command CONVERT_T
    Delay_us(120);

    Ow_Reset(&PORTE,2);
    Ow_Write(&PORTE,2,0xCC);       // Issue command SKIP_ROM
    Ow_Write(&PORTE,2,0xBE);       // Issue command READ_SCRATCHPAD

    temp =  Ow_Read(&PORTE,2);
    temp = (Ow_Read(&PORTE,2) << 8) + temp;

    //--- Format and display result on Lcd
    Display_Temperature(temp);

    Delay_ms(500);
  } while (1);
}
 
Last edited:
i use CSC C and mplab IDE

how to enable the output oscilator? i want to use a cristal quart oscilator
 
i have try this cod for now, but nothing......
the read is 0
where is wrong?
 

Attachments

  • FLEX_LCD.zip
    124.3 KB · Views: 166
Last edited:
Status
Not open for further replies.

Latest threads

Back
Top