ايران ويج

نسخه‌ی کامل: کنترل نور LED به روش pwm controller ؟
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
برای کنترل نور حدود 140 تا led از روش pwm controller استفاده کردم ( چون اگر از مقاومت استفاده میکردم نیمی از توان به شکل گرما تلف میشد و......) با آی سی 555 ، اما مشکلی که این مدار داره اینه که مینیمم جریان اون 1.37 آمپر و ماکزیمم جریان کسی اون 2.5 آمپره ، مشکل اینجاست که من میخوام تغییراتی در مدار اعمال کنم که مینیمم جریان به حدود 0.5 آمپر برسه ، آیا میشه اینکار رو کرد یا باید از مدار دیگه ای استفاده کنم ؟
[تصویر:  38a178d6e970f8f5cdb6b2e571cdb608.gif]
سلام
فکرکنم با تغییر تو قسمت درایو (ترانزیستور و ..) بشه اینکار رو انجام داد !!یه تست کنید ببینید چطوره ،مثلا یه ترانزیستور NPN  یه مقاومت 1 کیلو روی بیس
اگر از میکروکنترلر AVR استفاده کنم چی ؟ که فک کنم چن تا عیب داشته باشه ، یکی از عیب هاش اینه که وقتی ocr0 رو با میکروسوئیچ کاهش میدیم تا صفر شاید هم تا منفی و وقتی میخوایم ocr0 رو افزایش میدیم تا بیش از 255 میره ، برای جلوگیری از این عیب باید چیکار کرد ؟
به برنامه زیر نگاه کنید :

کد:
void main(void)
{
DDRB=0x08;
DDRD=0x00;
TCCR0=0x61;
TCNT0=0x00;
OCR0=2;
while(1)
{
if(PIND.0==0)
{
OCR0=OCR0*2;
delay_ms(100);
}


if(PIND.1==0)
{
OCR0=--OCR0;
delay_ms(100);
}
}
}
سلام، شما تو هر انجمنی هستی مشکلتو به صورت موازی مطرح میکنی و پیش میبری؟  خنده بلد − بهینه شده برای ورژن جدید
راه حل اینهکه یک شرط بزاری، مثلا تا زمانی OCR0 رو دو برابر کن که مقدارش از 255 کمتر باشه ( البته برای دو برابر شدن شرط باید تا زمانی باشه که OCR0 از 127 کمتر باشه که دو برابر که میشه از 255 کمتر باشه).
و برای کاهش هم تا زمانی کاهش بده که از 0 بزرگتر باشه، چون منفی که نداریم، وقتی از 0 بخواد کمتر بشه، برابر 255 میشه.
(۰۵-شهریور-۱۳۹۹, ۰۸:۵۸:۱۸)aka.ReZa نوشته است: [ -> ]سلام، شما تو هر انجمنی هستی مشکلتو به صورت موازی مطرح میکنی و پیش میبری؟  خنده بلد − بهینه شده برای ورژن جدید
راه حل اینهکه یک شرط بزاری، مثلا تا زمانی OCR0 رو دو برابر کن که مقدارش از 255 کمتر باشه ( البته برای دو برابر شدن شرط باید تا زمانی باشه که OCR0 از 127 کمتر باشه که دو برابر که میشه از 255 کمتر باشه).
و برای کاهش هم تا زمانی کاهش بده که از 0 بزرگتر باشه، چون منفی که نداریم، وقتی از 0 بخواد کمتر بشه، برابر 255 میشه.

میدونم باید اینطوری باشه نحوه نوشتن کدش رو نمیدونم چطوریه ؟
نحوه نوشتن کدش رو توضیح دادم که باید با if انجام بدی و شرط های if رو هم گفتم.
(۰۷-شهریور-۱۳۹۹, ۱۱:۱۸:۳۱)aka.ReZa نوشته است: [ -> ]نحوه نوشتن کدش رو توضیح دادم که باید با if انجام بدی و شرط های if رو هم گبرا
برای این برنامه دو تا میکروسوئیچ گذاشتم به پورت D ، این چیزی که شما میگید نیاز به while داره . تست کردم جواب تداد !
خیر، چیزی که من گفتم رو باید در داخل شرط های کلید ها و برای افزایش و کاهش مقدار PWM بنویسی.
کد که نوشتی رو بفرست
کد:
while(1)
{
if(PIND.0==0)
{
while(OCR0<255){
OCR0=OCR0*2;
delay_ms(100);
}
}
خب به نظر شما، این همون توضیحاتیه که من دادم؟ من گفتم if شما while گذاشتی، یک بار دیگه با دقت توضیحاتم رو بخون، اگه احساس میکنی توضیحاتم کامل یا کافی نیست بهم بگو تا از اول توضیح بدم.
(۰۹-شهریور-۱۳۹۹, ۱۲:۵۱:۴۱)aka.ReZa نوشته است: [ -> ]خب به نظر شما، این همون توضیحاتیه که من دادم؟ من گفتم if شما while گذاشتی، یک بار دیگه با دقت توضیحاتم رو بخون، اگه احساس میکنی توضیحاتم کامل یا کافی نیست بهم بگو تا از اول توضیح بدم.

شما گفتی :
"راه حل اینهکه یک شرط بزاری، مثلا تا زمانی OCR0 رو دو برابر کن که مقدارش از 255 کمتر باشه " 
وقتی کلمه تا زمانی که بکار می برید بهترینش همون while است ، شاید بشه با دو تا if تو در تو نوشت . من نمیدونم فقط با یک if تنها میشه کل جمله بالا + چک کردن کلید رو انجام داد یانه ...من با یک if بلد نیستم .
صفحه‌ها: 1 2