PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : راه اندازی ماژول آلتراسونیک مدل srf08



hamed14156
08-02-2010, 18:00
با سلام

من در درایو کردن این ماژول نیاز به کمک دارم
برنامه ای که نوشتم به شکل زیر هست اما چیزی که به من نمایش میده فقط عدد 255 است
حالا سوال من اینه که چه جوری و چه تغییراتی نیاز است که تو برنامه بدم تا فاصله صحیح رو به من بده .


#include<p18f452.h>
#include<delays.h>
#include<i2c.h>
#include<stdio.h>
#include<xlcd.h>
#include<stdlib.h>

#pragma config OSC=XT,WDT=OFF,LVP=OFF

void main()
{
int range[17];
char string[30];
int i,result=0;
unsigned char datah=0,datal=0;

OpenXLCD(FOUR_BIT & LINES_5X7);
OpenI2C(MASTER, SLEW_ON);
SSPADD = 9;

while(1)
{
StartI2C();
WriteI2C(0xE0);
WriteI2C(0x00);
WriteI2C(0x51);
StopI2C();

//wait for returning ping
Delay1KTCYx(105); // delay_ms(105);

StartI2C();
WriteI2C(0xE0);
WriteI2C(0x02);
StartI2C();
WriteI2C(0xE1);
datah = ReadI2C();
datal = ReadI2C();

StopI2C(); // i2c_stop();

result= (( datah << 8 ) | datal);
itoa(result,string);

Delay10KTCYx(100); // delay_ms(1000);
while(BusyXLCD());
SetDDRamAddr(0);
putsXLCD(string); //display the result
while( BusyXLCD() );

Delay10KTCYx(70);
}
}

1nafar
08-02-2010, 21:22
سلام
راه اندازی این ماژول تقریبا کار ساده ای هست ، توی ادرس پروژه راه اندازی این ماژول + کتاب خونه ی اون وجود داره :
You can see links before reply
مشکل اصلی باس I2C هست که به شدت به فرکانس وابسه هست . شما احتمالا مقدار کریستال رو به درستی تعیین نکردید که در خروجی عدد 255 رو میگیرید .
بهتره مداری رو که بستید بزارید تا بیشتر بررسی بشه

hamed14156
10-02-2010, 00:44
اگر بشه روی همین برنامه ای که نوشتم بریم جلو چون برنامه ای که در سایت بود متوجه نشدم
شماتیک مدارم هم مثل همان نقشه ای بود که در سایت قرار داشت

1nafar
10-02-2010, 23:44
این کد رو با میکرو c نوشتید ؟
کریستال رو چک کردید ؟

hamed14156
11-02-2010, 09:56
من با mplab C18 این برنامه رو نوشتم . از لحاظ کریستال هم مشکل نداره هر چی هست مشکل از برنامه است چون همان طور که قبلا گفتم با دادن آدرس صحیح به این ماژول چراغ قرمز آن روشن می شود که این اتفاق در مدار من می افتد و به صورت چشمک زن عمل می کند

mostafa_a
03-02-2011, 23:45
سلام

من ماژول srf08 رو وصل کردم و برنامه ش رو هم با c نوشتم .بعد از آدرس 2 و 3 خوندم (بر حسب سانتی متر) اما فقط برای 0 تا 60 سانت جواب داد و از اون بیشتر رو کلا اعداد عجیب غریبی می نویسه رو ال سی دی. لطفا هر کسی می تونه کمک کنه ، دیگه کاملا گیج شدم!!!!

mostafa_a
05-02-2011, 16:59
کسی تا الان به این مشکل بر نخورده؟؟

metijoon
01-08-2011, 00:46
Salam
in linki ke doste azizemon dade ro negah kardi?

metijoon
01-08-2011, 00:48
اگر داره 255 می نویسه یا کلاکت درست نیست
یا احتمالن sda یا sdl قطع هستند که داره مرتبا 1 منطقی رو در نظر می گیره
اتصالات رو چک کن!

cmuiran
01-08-2011, 13:58
میتونین به بیسیک هم بزارین

cmuiran
03-08-2011, 00:49
دست شما درد نکنه کمک کردین

saeedraja
27-08-2011, 16:32
/ Programa para un medidor de distancias hasta un objeto utilizando sensor por
// ultrasonido SRF08 para bus I2C.
//
/////////////////////////////////////////////////////////////////////////////////////////

#include <16F84A.h> // Librería predefinida para CCS.
#fuses XT, PUT, NOWDT, NOPROTECT
#use delay(clock=4000000)
#use fast_IO(A)
#use fast_IO(B)
#use i2c(Master,sda=PIN_A4,scl=PIN_A3)
int16 dist_alarma = 10;
main()
{

iint16 distancia;
char distancia_L, distancia_H, luz;


set_tris_A(0b00000000);
output_float(PIN_A3);
output_float(PIN_A4);
while(1)
{
i2c_start(); // Bit de Start.

i2c_write(0xE0); // Direccio'n del SRF08 en escritura.

i2c_write(0x00);// El registro de comando esta' en la ubicacio'n 0.

i2c_write(0x51);// 0x51 es el comando de ca'lculo de distancia en cm.

i2c_stop(); // Bit de Stop.

delay_ms(100); // Espera ma's de 65 ms hasta la lectura.

i2c_start(); // Bit de Start.

i2c_write(0xE0); // Direccio'n del SRF08 en escritura.

i2c_write(0x01);// Apunta a la ubicacio'n 0x01 que es a partir donde se

i2c_stop();// encuentran los registros para leer luz y distancia.

i2c_start();

i2c_write(0xE1); // Direccio'n del SRF08 en lectura.

luz = i2c_read(1); // Lee la luminosidad.

distancia_H = i2c_read(1);// Lee el byte alto de la distancia.

distancia_L = i2c_read(0);// Lee el byte bajo de la distancia.

i2c_stop();

distancia = make16(distancia_H,distancia_L);// Valor de la distancia.

printf("\r\nLuz: %u Lux\nDist.: %lu cm", luz, distancia);
delay_ms(5000);
}
}

kavosh
07-02-2012, 17:26
سلام
اینکه میگن مثلا آلتراسونیک srf02 رنج بین 16سانتی متر تا 6 متر داره یعنی در فاصله کمتر از 16 سانتی متر قرار بگیره قاطی میکنه؟ یا به ما عدد 16cm رو میده؟

gozoo
30-07-2013, 06:17
دوستان یک سوال چطور باید ادرس 2و3 از این ماژول خواند........
لطفا بگید