<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>کال</title>
	<atom:link href="http://abd.manidea.com/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://abd.manidea.com/blog</link>
	<description>تجربیات کامپیوتر، الکترونیک و لینوکس عبد</description>
	<pubDate>Wed, 04 Feb 2009 13:08:43 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>fa</language>
			<item>
		<title>بازی با گیمپ یا چطور مردم را رنگ کنیم</title>
		<link>http://abd.manidea.com/blog/archives/431</link>
		<comments>http://abd.manidea.com/blog/archives/431#comments</comments>
		<pubDate>Thu, 15 Jan 2009 06:24:53 +0000</pubDate>
		<dc:creator>عبد</dc:creator>
		
		<category><![CDATA[برنامه‌ کاربردی]]></category>

		<category><![CDATA[لینوکس]]></category>

		<category><![CDATA[گرافیک کامپیوتری]]></category>

		<category><![CDATA[گیمپ]]></category>

		<guid isPermaLink="false">http://abd.manidea.com/blog/?p=431</guid>
		<description><![CDATA[مدت‌ها بود که وبلاگ را آپدیت نکرده بودم ولی موضوعی جالب در دانشگاه اتفاق افتاد که گفتم بد نیست به عنوان یک راهنمای کوچک اینجا بنویسم! البته پیشاپیش بگویم که موضوع این نوشته کاملا متفاوت از نوشته‌های قبلی است و فقط به کامپیوتر مربوط می‌شود و نه به الکترونیک!

امروز در دانشگاه، درخواست یکی از دوستانم [...]]]></description>
			<content:encoded><![CDATA[<p>مدت‌ها بود که وبلاگ را آپدیت نکرده بودم ولی موضوعی جالب در دانشگاه اتفاق افتاد که گفتم بد نیست به عنوان یک راهنمای کوچک اینجا بنویسم! البته پیشاپیش بگویم که موضوع این نوشته کاملا متفاوت از نوشته‌های قبلی است و فقط به کامپیوتر مربوط می‌شود و نه به الکترونیک!<br />
<span id="more-431"></span><br />
امروز در دانشگاه، درخواست یکی از دوستانم (مسئول آزمایشگاه) خیلی جالب بود. بنده خدا برای کار‌های اداری به یک عکس نیاز داشت (این عکس هم به صورت دیجیتال در کامپیوتر بود) که روز قبل انداخته بود. ولی خوب مشکلات این عکس، سوژه‌ای جالب برای نوشتن این موضوع شد.<br />
همکار‌ان این دوست ما، وقتی عکسش را با پیراهنی قرمز رنگ دیده بودند، مسخره کرده‌ بودند و گفته بودند «مرد حسابی مگه می‌خواهی بری خاستگاری که این جوری عکس انداختی این عکس به درد کار اداری نمی‌خوره» حالا جدا از درست یا غلط بودن حرف همکار‌ها، این دوست ما نگران شده بود و می‌خواست مشکل را بدون زحمت (یعنی دوباره عکس بیندازد) حل کند.<br />
خلاصه کل موضوع این بود که آیا می‌تونیم رنگ پیراهن را در عکس عوض کنیم یا نه؟ من با اینکه خیلی کم با برنامه‌های گرافیکی آشنا هستم، با اعتماد به نفسی عجیب گفتم «عکس را بیاورد تا روی آن کار کنیم» و جالب اینجا است که به صورت کاملا اتفاقی عکس به خوبی درست شد و همگی کلی لذت بردیم! چون موضوع جالب بود به نظرم رسید مراحل را توضیحی مختصر بنویسم تا هم وبلاگ به روز بشه (به قول رندی، حاضری زده بشه) هم روش رنگ کردم مردم با گیمپ را یاد بگیریم!</p>
<p>برای این آموزش ساده نیاز به یک عکس داریم، عکسی که انتخاب کردم عکسی از <a href="http://fa.wikipedia.org/wiki/%D8%B1%DB%8C%DA%86%D8%A7%D8%B1%D8%AF_%D8%A7%D8%B3%D8%AA%D8%A7%D9%84%D9%85%D9%86">ریچارد استالمن</a> (<a href="http://en.wikipedia.org/wiki/Richard_Stallman">Richard Stallman</a>) بنیانگزار <a href="http://fa.wikipedia.org/wiki/%DA%AF%D9%86%D9%88">گنو</a> (<a href="http://en.wikipedia.org/wiki/GNU">GNU</a>) با پیرهن آبی است. حالا فرض کنید که شما به هر دلیلی می‌خواهید پیراهن ریچارد را قرمز کنید (مثلا به علت علاقه وافر به هوگو چاوز!). انجام این کار با برنامه قدرتمند و محبوب <a href="http://www.gimp.org/">گیمپ Gimp </a>(برنامه‌ای معادل فوتوشاپ) به سادگی آب خوردن است!</p>
<div id="attachment_433" class="wp-caption aligncenter" style="width: 254px"><img src="http://abd.manidea.com/blog/wp-content/uploads/stallman.jpg" alt="عکسی از ریچارد برای رنگ کردن!" title="stallman" width="244" height="300" class="size-full wp-image-433" /><p class="wp-caption-text">عکسی از ریچارد برای رنگ کردن!</p></div>
<p><strong>۱.</strong> عکس مورد نظرتان را با گیمپ باز کنید. اگر از ابونتو (و اکثر توزیع‌های دیگر) استفاده می‌کنید گیمپ به صورت پیشفرض بر روی لینوکس شما نصب است. </p>
<div id="attachment_435" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/gimp-stallman-1.jpg"><img src="http://abd.manidea.com/blog/wp-content/uploads/gimp-stallman-1-300x258.jpg" alt="نمای ابتدایی گیمپ" title="gimp-stallman-1" width="300" height="258" class="size-medium wp-image-435" /></a><p class="wp-caption-text">نمای ابتدایی گیمپ</p></div>
<p><strong>۲.</strong> از پنجره جعبه ابزار (ToolBox)، ابزار Fuzzy Select را انتخاب کنید. این ابزار به صورت هوشمند بر پایه تفاوت رنگ‌ها، محدوده‌ای از عکس را انتخاب (Select) می‌کند.</p>
<div id="attachment_436" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/gimp-stallman-2.jpg"><img src="http://abd.manidea.com/blog/wp-content/uploads/gimp-stallman-2-300x128.jpg" alt="انتخاب ابزار Fuzzy Select برای جدا کردن بخشی از تصویر!" title="gimp-stallman-2" width="300" height="128" class="size-medium wp-image-436" /></a><p class="wp-caption-text">انتخاب ابزار Fuzzy Select برای جدا کردن پیراهن ریچارد!</p></div>
<p><strong>۳.</strong> بعد از انتخاب ابزار Fuzzy Select روی قسمت مورد نظرتان کلیک کنید. با توجه به ناحیه‌های رنگی در عکس قسمتی از ناحیه مورد نظر شما انتخاب می‌شود. در مثال ما، قسمت جالب پیراهن آبی ریچارد است که اکنون قسمتی از آن انتخاب شده است.</p>
<div id="attachment_439" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/gimp-stallman-3.jpg"><img src="http://abd.manidea.com/blog/wp-content/uploads/gimp-stallman-3-300x274.jpg" alt="انتخاب اولیه ابزار Fuzzy Select" title="gimp-stallman-3" width="300" height="274" class="size-medium wp-image-439" /></a><p class="wp-caption-text">انتخاب اولیه ابزار Fuzzy Select</p></div>
<p><strong>۴.</strong> همان طور که از عکس مشخص است انتخاب اولیه خیلی ناقص است و باید اصلاح شود. برای اضافه کردن بخش‌هایی به محدوده انتخاب شده از کلیک به همراه شیفت (Shift+Click) و برای کم کردن بخش‌هایی که به اشتباه انتخاب شده‌اند، از کلیک به همراه کنترل (Ctrl+Click) استفاده کنید. بهتر است برای دقیق‌تر شدن تصویر را به اندازه کافی بزرگ کنید و با دقت بر روی لبه‌ها کار کنید. برای بزرگ و کوچک کردن تصویر (Zoom In/Out) می‌توانید از Ctrl+Scroll استفاده کنید. دقت کنید گیمپ ترکیب‌های متخلف ابزار انتخاب شده را در قسمت پائینی پنجره عکس نشان می‌دهد که راهنمای خوبی برای شما خواهد بود.</p>
<div id="attachment_441" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/gimp-stallman-4.jpg"><img src="http://abd.manidea.com/blog/wp-content/uploads/gimp-stallman-4-300x240.jpg" alt="با بزرگ کردن تصویر، ناحیه مورد نظر را  دقیق‌تر  انتخاب کنید" title="gimp-stallman-4" width="300" height="240" class="size-medium wp-image-441" /></a><p class="wp-caption-text">با بزرگ کردن تصویر، ناحیه مورد نظر را دقیق‌تر انتخاب کنید</p></div>
<p><strong>۵.</strong> انتخاب پیراهن را کامل کنید.دقت کنید دکمه سفید فراموش ‌نشود:) (دکمه نباید در محدوده انتخاب باشد)!</p>
<div id="attachment_443" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/gimp-stallman-5.jpg"><img src="http://abd.manidea.com/blog/wp-content/uploads/gimp-stallman-5-300x238.jpg" alt="انتخاب محدوده مورد نظر را کامل کنید" title="gimp-stallman-5" width="300" height="238" class="size-medium wp-image-443" /></a><p class="wp-caption-text">انتخاب محدوده مورد نظر را کامل کنید</p></div>
<p><strong>۶.</strong> حالا وقت رنگ کردن مردم است! از Colors | Colorize Tool را انتخاب کنید. پنجره Colorize نمایش داده خواهد شد. با تغییر Hue و Saturation رنگ مورد نظرتان را درست کنید.</p>
<div id="attachment_445" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/gimp-stallman-6.jpg"><img src="http://abd.manidea.com/blog/wp-content/uploads/gimp-stallman-6-300x153.jpg" alt="ابزار Colorize را برای تغییر رنگ‌های ناحیه انتخاب شده، استفاده کنید" title="gimp-stallman-6" width="300" height="153" class="size-medium wp-image-445" /></a><p class="wp-caption-text">ابزار Colorize را برای تغییر رنگ‌های ناحیه انتخاب شده، استفاده کنید</p></div>
<div id="attachment_446" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/gimp-stallman-7.jpg"><img src="http://abd.manidea.com/blog/wp-content/uploads/gimp-stallman-7-300x182.jpg" alt="با تغییر Hue و Saturaion رنگ مورد نظرتان را درست کنید" title="gimp-stallman-7" width="300" height="182" class="size-medium wp-image-446" /></a><p class="wp-caption-text">با تغییر Hue و Saturaion رنگ مورد نظرتان را درست کنید</p></div>
<p>۷. بعد از انتخاب رنگ کلید OK را بزنید. در این مرحله کار تمام شده است. فقط فراموش نکنید که عکس را ذخیره کنید!<br />
<div id="attachment_447" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/gimp-stallman-8.jpg"><img src="http://abd.manidea.com/blog/wp-content/uploads/gimp-stallman-8-300x274.jpg" alt="تصویر نهایی بعد از رنگ آمیزی" title="gimp-stallman-8" width="300" height="274" class="size-medium wp-image-447" /></a><p class="wp-caption-text">تصویر نهایی بعد از رنگ آمیزی</p></div></p>
<p>* بعضی از گوشه‌های عکس هنوز کمی رنگ آبی دارد. شاید بتوان با دقت بیشتر این قسمت‌ها را نیز از بین برد!<br />
* احتمالا این کار روش‌های بهتر و کارامد‌تری داشته باشد، تجربه من از گرافیک کامپیوتری در همین حد است!<br />
* کاملا منطقی است که در عصر کنونی فیلم و عکس به عنوان مدرک در دادگاه‌‌ها پذیرفته نشود!</p>
<div id="attachment_448" class="wp-caption aligncenter" style="width: 254px"><img src="http://abd.manidea.com/blog/wp-content/uploads/stallman1.jpg" alt="ریچارد در پیراهنی جدید!" title="stallman1" width="244" height="300" class="size-full wp-image-448" /><p class="wp-caption-text">ریچارد در پیراهنی جدید!</p></div>
]]></content:encoded>
			<wfw:commentRss>http://abd.manidea.com/blog/archives/431/feed</wfw:commentRss>
		</item>
		<item>
		<title>بورد آزمایشی برای استفاده از FT245BM</title>
		<link>http://abd.manidea.com/blog/archives/378</link>
		<comments>http://abd.manidea.com/blog/archives/378#comments</comments>
		<pubDate>Thu, 20 Nov 2008 08:05:00 +0000</pubDate>
		<dc:creator>عبد</dc:creator>
		
		<category><![CDATA[الکترونیک]]></category>

		<category><![CDATA[FT245]]></category>

		<category><![CDATA[gEDA]]></category>

		<category><![CDATA[gschem]]></category>

		<category><![CDATA[PCB]]></category>

		<category><![CDATA[USB]]></category>

		<guid isPermaLink="false">http://abd.manidea.com/blog/?p=378</guid>
		<description><![CDATA[یکی از دلایل وقفه زیاد در به‌روز‌رسانی وبلاگ، مشکلات اعصاب خوردکن در کار با وردپرس است. ادیتور برنامه معمولا کد‌های مرا بعد از جابه‌جایی عکس‌های داخل متن کاملا پاک می‌کند. علاوه بر این سایت مدت‌ها در IE مشکل داشت! البته ناگفته نماند که من خیلی HTML و CSS بلد نیستم و این یکی از دلایل [...]]]></description>
			<content:encoded><![CDATA[<p>یکی از دلایل وقفه زیاد در به‌روز‌رسانی وبلاگ، مشکلات اعصاب خوردکن در کار با وردپرس است. ادیتور برنامه معمولا کد‌های مرا بعد از جابه‌جایی عکس‌های داخل متن کاملا پاک می‌کند. علاوه بر این سایت مدت‌ها در IE مشکل داشت! البته ناگفته نماند که من خیلی HTML و CSS بلد نیستم و این یکی از دلایل مشکلات کار کردن من با وردپرس است.  خوب حالا از دلایل ماسمالی کردن تنبلی می‌گذریم.</p>
<p>مدت‌ها قبل مدار مبدل USB به سریال را با تراشه FT232 درست کرده بودم که به خوبی هم کار می‌کند. بعد از مدتی تصمیم گرفتم که با تراشه FT245 هم کار کنم. این تراشه مبدل USB به موازی است (البته نه پورت موازی/پرینتری که در کامپیوتر‌های شخصی وجود دارد) که یک IO با پهنای ۸ بیت فراهم می‌کند. علاوه بر این از اینترفیس ساده ۴ بیتی برای Hand-shaking  استفاده می‌کند. این ۴ بیت به این صورت است (علامت # به معنی active-low بودن سیگنال است):<br />
<span id="more-378"></span><br />
<strong>RXF#</strong> دیتا در خروجی FIFO  برای خواند آماده است.<br />
<strong>RD#</strong> خواندن از FIFO با لبه پایین رونده این سیگنال.<br />
<strong>TXE#</strong> نشان دهنده آماده بودن FIFO برای نوشتن در آن است.<br />
<strong>WR</strong> نوشتن در FIFO با لبه بالا رونده این سیگنال.</p>
<p>البته روش خیلی ساده‌تری نیز برای کار با این تراشه وجود دارد که در ادامه به آن اشاره می‌کنم.</p>
<p>این تراشه مدت‌های در قفسه قطعات من خاک می‌خورد تا آنکه چندین ماه گذشته قطعات جانبی مورد نیاز برای ساخت مدار FT245 را از جمهوری تهیه کردم. بعد از مدتی متوجه شدم یکی از قطعات را فروشنده اشتباه داده است که همین نکته باعث شد دوباره ساخت مدار یک ماه عقب بیفتد. به هر حال حدود سه هفته قبل شماتیک و بورد مدار تکمیل شد. برای ساخت بورد از روش نور‌دهی و لامینت استفاده کردم. علت استفاده از این روش نیز، نازک بودن خطوط بورد به علت محدودیت اندازه بورد است.</p>
<h3>درباره مدار:</h3>
<p>تغذیه تراشه‌ FT245BM را می‌توان به اشکال مختلفی پیکربندی کرد. سازنده تراشه (FTDI) شماتیک روش‌های مختلف را در <a href="http://www.ftdichip.com/Documents/Schematics/FT245BM/245sch20.zip">این فایل</a> و در <a href="http://www.ftdichip.com/Documents/Schematics.htm">اینجا</a> قرار داده است. تفاوت عمده این مدار‌ها در تغذیه چیپ و IOهای آنها است.<br />
ولتاژ IOهای تعداد زیادی از چیپ‌ها نمی‌تواند 5v باشد و به عبارت بهتر 5v-tolerant نیستند. به همین دلیل من مداری را انتخاب کردم که در آن رگولاتور ۳.۳ ولتی قرار دارد و IOهای تراشه FT245 از این ولتاژ استفاده می‌کنند.<br />
شماتیک برنامه را با <a href="http://www.geda.seul.org/tools/gschem/">gschem</a> کشیدم، و چون سیمبول FT245BM رو پیدا نکردم، سیمبول FT245BM را با برنامه <a href="http://www.gedasymbols.org/user/dj_delorie/tools/djboxsym.html">djboxsym</a> طراحی کردم (سعی کردم تا حد ممکن شکل سیمبول مانند سیمبول داخل شماتیک FTDI باشد). شما می‌توانید djboxsym را به صورت آنلاین هم در <a href="http://vivara.net/cgi-bin/djboxsym.cgi">اینجا</a> آزمایش کنید.</p>
<div id="attachment_382" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/ft245-bob_sch.png"><img class="size-medium wp-image-382" title="ft245-bob_sch" src="http://abd.manidea.com/blog/wp-content/uploads/ft245-bob_sch-300x233.png" alt="شماتیک مدار FT245" width="300" height="233" /></a><p class="wp-caption-text">شماتیک مدار FT245</p></div>
<h3>درباره بورد:</h3>
<p>برای استفاده راحت‌تر از بورد، بورد را به صورتی طراحی کردم که بتوانم از آن در بردبورد قرار استفاده کنم. چون خودم می‌خواستم برد را در خانه درست کنم، آن را به صورت تک لایه طراحی کردم. به این دو دلیل تمام قطعات را از نوع SMD انتخاب کردم. البته به شخصه هم علاقه فراوانی به SMD دارم. برای ساده‌تر شدن مدار هم، تراشه E2PROM را از مدار حذف شده است. بورد را با برنامه <a href="http://pcb.sourceforge.net/">PCB</a> طراحی کردم. کشیدن بورد خیلی پر زحمت بود و دو روز وقت گرفت، ولی نتیجه کار به نظرم به نسبت راضی کننده است.</p>
<div id="attachment_386" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/ft245-bob_pcb1.png"><img class="size-medium wp-image-386" title="ft245-bob_pcb1" src="http://abd.manidea.com/blog/wp-content/uploads/ft245-bob_pcb1-300x165.png" alt="بورد FT245BL" width="300" height="165" /></a><p class="wp-caption-text">بورد FT245BL</p></div>
<div id="attachment_387" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/board-image.jpg"><img class="size-medium wp-image-387" title="board-image" src="http://abd.manidea.com/blog/wp-content/uploads/board-image-300x276.jpg" alt="تصویر از دو طرف بورد ساخته شده" width="300" height="276" /></a><p class="wp-caption-text">تصویر از دو طرف بورد ساخته شده</p></div>
<h3>عملکرد و برنامه (درایور):</h3>
<p style="text-align: center;"><span style="color: #ff0000;">در استفاده از این برد دقت کنید، بعضی از قسمت‌های برد باید کمی ترمیم شود.</span></p>
<p>همان طور که در بالا هم اشاره کردم، استفاده از روش ۴ بیتی برای صحبت کردن با چیپ کمی سخت است (ولی روشی اصولی و سریع‌ است). روش دیگری که برای کار با تراشه وجود دارد، مد Bitbang است (تراشه FT232 نیز دقیقا همین مد را دارد). به عبارت ساده در این مد می‌توان وضعیت IO ها را به صورت یک عدد ۸ بیتی خواند و یا یک عدد ۸ بیتی در آن نوشت. کار با این مد خیلی ساده و روتین است، من مدار ساخت شده را در این مد تست کرده‌ام ولی هنوز مد ۴ بیتی را تست نکرده‌ام.<br />
برای درایور نیز خوشبختانه در لینوکس کتابخانه libftdi وجود دارد، این کتابخانه برای کار با چیپ‌های FTDI درست شده است،‌ و کار با این چیپ را خیلی ساده می‌کند. (دوستانی که از لینوکس‌های Debian-based استفاده می‌کنند، باید پکیج libftdi-dev و  libftdi را نصب کنند).<br />
کتابخانه libftdi-dev تعدادی مثال دارد که می‌توانید با مطالعه آنها به راحتی عملکرد کتابخانه را یاد بگیرید (در ابونتو این مثال‌ها در <a href="file:///usr/share/doc/libftdi-dev/examples">/usr/share/doc/libftdi-dev/examples</a> قرار گرفته است). من یکی از این مثال‌ها را به صورتی تغییر داده‌ام که ۱ بیت در خروجی به سمت چپ شیف پیدا کند (مدار بر روی بردبورد به ۸ دیود نورانی متصل شده است).<br />
<strong>توضیحات کد:</strong><br />
قسمت ابتدای کد راه‌اندازی کتابخانه (ftdi_init) ، در مرحله بعدی باز کردن یک ارتباط با (ftdi_usb_open ) چیپ و در انتها بررسی اینکه آیا USB پیدا شده است یا نه.</p>
<pre name="code" class="cpp">

struct ftdi_context ftdic;
int f,i;
ftdi_init(&amp;ftdic);
f = ftdi_usb_open(&amp;ftdic, 0x0403, 0x6001);
if(f &lt; 0 &amp;&amp; f != -5) {
	fprintf(stderr, &quot;unable to open ftdi device: %d (%s)\n&quot;,\
			 f, ftdi_get_error_string(&amp;ftdic));
	exit(-1);
}
</pre>
<p>مرحله بعدی پیکربندی تراشه در مد bitbang است. تابع ftdi_enable_bitbang پارامتری برای مشخص کردن جهت بیت‌های IO دارد. در مثال ما هر ۸ بیت خروجی هستند به همین دلیل مقدار این پارامتر 0xFF است.</p>
<pre name="code" class="c">

ftdi_enable_bitbang(&amp;ftdic, 0xFF);
</pre>
<p>برای نوشتن در تراشه در مد bitbang باید از تابع ftdi_write_data استفاده کرد. برای خواند در مد bitbang هم باید از تابع ftdi_read_pins استفاده کرد.</p>
<pre name="code" class="c">

buf[0] = (buf[0]==0x80)?0x01:buf[0]&lt;&lt;1;
f = ftdi_write_data(&amp;ftdic, buf, 1);
if(f &lt; 0) {
	fprintf(stderr,&quot;write failed for 0x%x, error %d (%s)\n&quot;,\
			buf[0],f, ftdi_get_error_string(&amp;ftdic));
}
</pre>
<p>در انتهای کار هم باید مد bitbang را غیر فعال نمود و همچنین ارتباط با USB را خاتمه داد.</p>
<pre name="code" class="c">

ftdi_disable_bitbang(&amp;ftdic);
ftdi_usb_close(&amp;ftdic);
ftdi_deinit(&amp;ftdic);
</pre>
<p>کد کامل برنامه ledshift.c را از <a href="http://abd.manidea.com/projects/ft245-bob/ledshift.c">اینجا </a>دریافت کنید. و برای کامپایل کردن آن به این صورت عمل کنید:</p>
<p><code> gcc ledshift.c -o ledshift -l ftdi </code><br />
همان طور که اشاره کردم، برای تست مدار، بورد را بر روی بردبورد به ۸ عدد دیود نورانی (و مقاومت ۲۲۰ اهم) متصل کردم، که بتوانم درایور را تست کنم.</p>
<div id="attachment_404" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/ft245_board_on_breadboard.jpg"><img class="size-medium wp-image-404" title="ft245_board_on_breadboard" src="http://abd.manidea.com/blog/wp-content/uploads/ft245_board_on_breadboard-300x149.jpg" alt="آزمایش بورد بر روی بردبورد به همراه دیودنورانی" width="300" height="149" /></a><p class="wp-caption-text">آزمایش بورد بر روی بردبورد به همراه دیودنورانی</p></div>
<p><strong>فایل‌های ضمیمه:</strong></p>
<p>(+) <a href="http://abd.manidea.com/projects/ft245-bob/245-3vb.pdf">مدار اصلی (از سایت FTDI) که این مدار از روی آن طراحی شده است به فرمت پی‌دی‌اف.</a> (و به فرمت پی‌ان‌جی در <a href="http://abd.manidea.com/projects/ft245-bob/245-3vb.png">اینجا</a>)<br />
(+) <a href="http://abd.manidea.com/projects/ft245-bob/ft245-bob.tar.bz2">فایل فشرده شامل فایل‌های طراحی شماتیک و بورد، برنامه درایور و همچنین پی‌دی‌اف‌های تولید شده.</a><br />
(+) <a href="http://abd.manidea.com/projects/ft245-bob/ledshift.c">سورس کد درایور (ledkey.c)</a><br />
(+) <a href="http://abd.manidea.com/projects/ft245-bob/ft245.symdef">کد ورودی برنامه djboxsym برای درست کردن سیمبول تراشه FT245</a></code></p>
]]></content:encoded>
			<wfw:commentRss>http://abd.manidea.com/blog/archives/378/feed</wfw:commentRss>
		</item>
		<item>
		<title>راهنمای EMC برنامه‌ای برای کنترل CNC</title>
		<link>http://abd.manidea.com/blog/archives/319</link>
		<comments>http://abd.manidea.com/blog/archives/319#comments</comments>
		<pubDate>Sun, 05 Oct 2008 22:13:21 +0000</pubDate>
		<dc:creator>عبد</dc:creator>
		
		<category><![CDATA[CNC]]></category>

		<category><![CDATA[برنامه‌ کاربردی]]></category>

		<category><![CDATA[EMC]]></category>

		<category><![CDATA[اوبونتو]]></category>

		<category><![CDATA[لینوکس]]></category>

		<category><![CDATA[موتور پله‌ای]]></category>

		<guid isPermaLink="false">http://abd.manidea.com/blog/?p=319</guid>
		<description><![CDATA[
برنامه EMC یا Enhanced Machine Controller برنامه‌ای است، برای کنترل فرز، دستگاه تراش و یا دستگاه‌های مشابه. به بیان دیگر این برنامه کنترلر کامپیوتری برای دستگاه‌های CNC و یا روبات‌های صنعتی است. در ادامه بعضی از ویژگی‌های برنامه (که در حد سوادم هست) را از سایت برنامه در اینجا می‌نویسم.

ویژگی‌های EMC:

برنامه EMC، کد باز است [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/linuxcnc_logo.png"><img class="size-full wp-image-292 aligncenter" title="linuxcnc_logo" src="http://abd.manidea.com/blog/wp-content/uploads/linuxcnc_logo.png" alt="" width="170" height="124" /></a></p>
<p>برنامه EMC یا Enhanced Machine Controller برنامه‌ای است، برای کنترل فرز، دستگاه تراش و یا دستگاه‌های مشابه. به بیان دیگر این برنامه کنترلر کامپیوتری برای دستگاه‌های CNC و یا روبات‌های صنعتی است. در ادامه بعضی از ویژگی‌های برنامه (که در حد سوادم هست) را از <a href="http://www.linuxcnc.org/content/view/11/10/lang,en/">سایت</a> برنامه در اینجا می‌نویسم.</p>
<p><span id="more-319"></span></p>
<h3>ویژگی‌های EMC:</h3>
<ul>
<li style="text-align: justify;">برنامه EMC، کد باز است و بر اساس توافق‌نامه GPL منتشر می‌شود. کدباز بودن به این معنی است که شما به کد‌های برنامه دسترسی دارید و می‌توانید بر حسب نیاز خودتان آن را تغییر دهید و به صورت رایگاه استفاده کنید.</li>
<li style="text-align: justify;">این برنامه چندین رابط گرافیکی دارد که شما می‌توانید از هر کدام که علاقه دارید استفاده کنید.</li>
<li style="text-align: justify;">برنامه شامل مفسر کدهای <a href="http://en.wikipedia.org/wiki/Gcode">G-Code</a> برای ماشین‌کاری است.</li>
<li style="text-align: justify;">برنامه‌ریزی بلادرنگه برای حرکت‌های سیستم با امکان look-ahead (روشی کنترلی بر مبنای فرض داشتن اطلاعاتی از آینده سیستم؟ آیا درست گفته‌ام؟ )</li>
<li style="text-align: justify;">پیاده‌سازی قسمت‌های سطح پایین الکترونیکی در کار با موتور‌ها، سنسور‌ها و انکودر‌ها. پیاده‌سازی این قسمت‌ها به شما کمک می‌کند که مدار‌های رابط (interface) را ساده‌تر درست کنید و بگذارید که کامپیوتر زحمت بیشتری بکشد!</li>
<li style="text-align: justify;">یک لایه شبیه به بردبورد (!؟) با کاربری ساده برای پیکربندی دستگاه. این لایه معروف به Hardware Abstraction Layer یا HAL است. این لایه قسمت سخت‌افزار (منظور داریور‌های سخت‌افزار است) را از برنامه اصلی جدا می‌کند و یک مدل انتزاعی از سخت‌افزار را ارائه می‌کند. این جداسازی به شما امکان می‌دهد که بتوانید هر سخت‌افزاری را به برنامه EMC متصل کنید بدون اینکه نیاز باشد خود برنامه تغییر کند.</li>
<li style="text-align: justify;">پیاده‌سازی PLC به صورت نرم‌افزاری به کمک <a href="http://en.wikipedia.org/wiki/Ladder_logic">Ladder Diagram</a></li>
<li style="text-align: justify;">نصب خیلی ساده به کمک پکیج‌های .deb و یا با استفاده از سی‌دی زنده (<a href="http://en.wikipedia.org/wiki/Live_CD">Live CD</a>)</li>
<li style="text-align: justify;">برنامه EMC می‌تواند به صورت همزمان تا ۹ محور را با طیف گسترده‌ای از رابط‌های کنترل کند.</li>
<li style="text-align: justify;">کنترلر برنامه می‌تواند سروو موتور را به صورت حلقه بسته (حلقه در برنامه بسته می‌شود) و استپر موتور را به صورت حلقه باز کنتر کند.</li>
<li style="text-align: justify;">پشتیبانی از مختصات غیر کارتزین، شامل ماژول‌هایی برای روبات‌های <a href="http://en.wikipedia.org/wiki/Hexapod_(robotics)">شش‌پا</a> و یا روبات‌هایی با مفاصل چرخشی مانند <a href="http://en.wikipedia.org/wiki/SCARA">SCARA </a>و <a href="http://en.wikipedia.org/wiki/Programmable_Universal_Machine_for_Assembly">PUMA</a>.</li>
</ul>
<h3>دریافت برنامه EMC:</h3>
<p style="text-align: justify;">اگر دلتان برای تست این برنامه آب افتاده است،باید برنامه رو دریافت کنید. چندین روش برای دریافت برنامه وجود دارد:</p>
<ol>
<li style="text-align: justify;">دریافت سورس و کامپایل آن، البته علاوه بر کامپایل خود برنامه‌، شما باید کرنل بلادرنگ (Real Time) و ماژول‌های مورد نیاز را هم کامپایل و آماده کنید.<em> این روش دانش بالایی درباره لینوکس و کرنل آن نیاز دارد.</em></li>
<li style="text-align: justify;">اگر از اوبونتو هاردی (نسخه ۸/۰۴) استفاده می‌کنید، می‌توانید با اضافه کردن مخزن EMC برنامه را از مخزن نصب کنید. کرنل بلادرنگ نیز در این حالت به صورت خودکار نصب می‌شود.</li>
<li style="text-align: justify;">ساده‌ترین روش امتحان کردن برنامه با سی‌دی‌ زنده (Live CD) است. در این روش شما می‌توانید بدون اینکه لینوکس را بر روی هارددیسک نصب کنید، لینوکس و EMC را از روی سی‌دی اجرا کنید. کامپیوتر شما از روی سی‌دی بوت می‌شود و بدون اینکه بر روی هارد‌دیسک کامپیوتر شما چیزی اضافه کند، لینوکس و EMC اجرا می‌شوند. شما می‌توانید در این حالت برنامه را اجرا کنید و  یا حتی با آن ماشین‌کاری کنید. اگر به EMC علاقه‌مند شدید از داخل همین دیسک زنده‌، می‌توانید لینوکس را بر روی هارد خود نصب کنید.</li>
</ol>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/livecd.png"><img class="size-full wp-image-293 aligncenter" title="livecd" src="http://abd.manidea.com/blog/wp-content/uploads/livecd.png" alt="" width="234" height="174" /></a></p>
<p style="text-align: justify;">از  سه روش بالا، بدیهی است که روش سوم از همه ساده‌تر است، خوب من هم که تنبل هستم، پس به سراغ این گزینه می‌روم. در اولین مرحله شما نیاز به سی‌دی EMC دارید. فایل سی‌دی به فرمت iso است، شما باید این فایل را دانلود کنید و بعد روی سی‌دی رایت کنید. برای دریافت فایل به سایت EMC در <a href="http://www.linuxcnc.org/content/view/21/4/lang,en/">اینجا</a> بروید. دقت کنید نسخه اوبونتو ۸/۰۴ را دانلود کنید نه نسخه‌های قدیمی‌تر را. بعد از دانلود فایل، آن را بر روی سی‌دی‌ رایت کنید (مثلا در ویندوز با برنامه نرو). حالا شما سی‌دی EMC را دارید. آن را در سی‌دی‌رام قرار دهید و سیستم را ریست کنید (باید تنظیمات بایوس کامپیوتر شما به صورتی باشد که بتواند سیستم را از روی سی‌دی بوت کند البته اکثر سیستم‌ها به صورت پیشفرض در این حالت قرار دارند).</p>
<h3>تنظیمات برنامه EMC:</h3>
<p>ادامه توضیحات با چند‌ عکس به نظرم گویاتر است!</p>
<ul>
<li>در ابتدای بوت، باید زبان را انتخاب کنید (متاسفانه فارسی در لیست نیست). بعد هم اولین گزینه بوت (Try Ubuntu without any change in your computer) را انتخاب کنید (دو عکس‌ زیر را از <a href="http://www.justlookdifferent.com/2008/04/29/ubuntu-804-64-bit-lts-desktop-edition-review/">اینجا</a> برداشته‌ام).</li>
<div id="attachment_295" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/just_look_different_ubuntu_boot_language.jpg"><img class="size-medium wp-image-295" title="just_look_different_ubuntu_boot_language" src="http://abd.manidea.com/blog/wp-content/uploads/just_look_different_ubuntu_boot_language-300x225.jpg" alt="انتخاب زبان در اولین مرحله بوت اوبونتو" width="300" height="225" /></a><p class="wp-caption-text">انتخاب زبان در اولین مرحله بوت اوبونتو</p></div>
<div id="attachment_296" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/just_look_different_ubuntu_boot_menu.jpg"><img class="size-medium wp-image-296" title="just_look_different_ubuntu_boot_menu" src="http://abd.manidea.com/blog/wp-content/uploads/just_look_different_ubuntu_boot_menu-300x225.jpg" alt="منوی بوت در لینوکس هاردی ۸/۰۴" width="300" height="225" /></a><p class="wp-caption-text">منوی بوت در لینوکس هاردی ۸/۰۴</p></div>
<li>بعد از چند دقیقه (بسته به سرعت کامپیوتر و سی‌دی‌رام ممکن است زمان کمتر و یا بیشتر شود)، لینوکس (البته به همراه برنامه EMC) به شکل معجزه آسایی لود می‌شود.
<div id="attachment_298" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/1first_view_ubuntu.jpg"><img class="size-medium wp-image-298" title="1first_view_ubuntu" src="http://abd.manidea.com/blog/wp-content/uploads/1first_view_ubuntu-300x225.jpg" alt="اولین نما از اوبونتو" width="300" height="225" /></a><p class="wp-caption-text">اولین نما از اوبونتو</p></div></li>
<li>نگاهی به منوی EMC می‌اندازیم:
<p><div id="attachment_300" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/emc_gnome_menu.jpg"><img class="size-medium wp-image-300" title="emc_gnome_menu" src="http://abd.manidea.com/blog/wp-content/uploads/emc_gnome_menu-300x225.jpg" alt="منوی EMC در گنوم" width="300" height="225" /></a><p class="wp-caption-text">منوی EMC در گنوم</p></div>
<ul>
<li>برنامه اصلی (EMC2)</li>
<li>مرجع سریع جی‌-کد (EMC2 G-Code Quick Reference)</li>
<li>کتاب راهنما برای سازنده دستگاه سی‌ان‌سی (EMC2 Integrator Manual)</li>
<li>برنامه تنظیم استپر‌موتور‌ها (EMC2 Stepconf wizard)</li>
<li>کتاب راهنمای کاربران (EMC2 User Manual)</li>
</ul>
</li>
</ul>
<p style="text-align: justify;">از این مرحله به بعد به سراغ تنظیمات دستگاه می‌رویم. در اینجا فرض بر این است که شما درایور موتور‌های پله‌ای را درست کرده‌اید و پایه‌های پالس/جهت آن را به پایه‌های پورت پرینتر متصل کرده‌اید. اگر هنوز درایور را درست نکرده‌اید، می‌توانید برنامه را باز‌هم اجرا کنید. دقت کنید در اینجا می‌توانید با نحوه اتصال پیشفرض موتور‌ها به پورت نیز آشنا شوید.</p>
<ul>
<li style="text-align: justify;">چون دستگاه CNC ما بر پایه موتور‌های پله‌ای است، ابتدا به سراغ برنامه‌ی تنظیم موتور‌های پله‌ای می‌رویم (Stepconf wizard). این برنامه به صورت گرافیکی تنظیمات لازم برای اتصال موتور پله‌ای به پورت پرینتر (موازی) را انجام می‌دهد. در نسخه‌های قدیمی‌تر این برنامه وجود نداشت و کاربران باید به صورت دستی فایل‌های ini و hal را تنظیم می‌کردند که معمولا برای یک کاربر تازه‌کار کمی پر زحمت است.
<div id="attachment_301" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/stepconf_wizrd.jpg"><img class="size-medium wp-image-301" title="stepconf_wizrd" src="http://abd.manidea.com/blog/wp-content/uploads/stepconf_wizrd-300x291.jpg" alt="برنامه Stepconf برای تنظیم اتصال درایور موتور‌ها به برنامه EMC" width="300" height="291" /></a><p class="wp-caption-text">برنامه Stepconf برای تنظیم اتصال درایور موتور‌ها به برنامه EMC</p></div></li>
<li style="text-align: justify;">ابتدا باید انتخاب کنید که می‌خواهید یک تنظیم جدید برای دستگاه‌تان درست کنید (Create a new configuration) و یا تنظیمات دستگاهی را که با این برنامه درست کرده‌اید تغییر دهید (Modify a configuration already created with this program). علاوه بر این برنامه به شما هشدار می‌دهد که فایل‌های تنظیمات را خارج از Stepconf دست نزنید چون ممکن است این برنامه نتواند تغییرات را بازیابی کند. ما به سراغ تنظیم جدید می‌رویم.
<p><div id="attachment_302" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/stepconf_new_or_old_conf.jpg"><img class="size-medium wp-image-302" title="stepconf_new_or_old_conf" src="http://abd.manidea.com/blog/wp-content/uploads/stepconf_new_or_old_conf-300x291.jpg" alt="تنظیمات جدید/تغییر تنظیمات قدیمی" width="300" height="291" /></a><p class="wp-caption-text">تنظیمات جدید/تغییر تنظیمات قدیمی</p></div></li>
<li style="text-align: justify;">تنظیمات اولیه دستگاه در این مرحله انجام می‌شود (عدد‌های <span style="color: #ff0000;">قرمز رنگ</span> برای راهنمایی به عکس اضافه شده‌اند و جزئی از برنامه نمی‌باشند). در این قسمت ۵ گزینه مهم وجود دارد. برای بقیه تنظیم‌ها می‌توانید از مقادیر پیش‌فرض استفاده کنید.
<ul>
<li>(<strong><span style="color: #ff0000;">1</span></strong>) <em>نام دستگاه</em>. بهتر است برای دستگاه‌تان یک اسم جالب انتخاب کنید!</li>
<li>(<strong><span style="color: #ff0000;">2</span></strong>) <em>تعداد محور‌های دستگاه</em> که می‌تواند سه محور XYZ و یا چهار محور XYZA باشد.</li>
<li>(<strong><span style="color: #ff0000;">3</span></strong>) <em>انتخاب واحد دستگاه</em> بین میلی‌متر (متریک) و اینچ (امپریال).</li>
<li>(<strong><span style="color: #ff0000;">4</span></strong>)<em> انتخاب نوع درایور</em>. چون درایور ما دست‌ساز هست باید گزینه other انتخاب شود. چهار تنظیم زمانی بعدی نیز وابسته به نوع درایور است که ما در این مرحله مقادیر پیشفرض را انتخاب می‌کنیم.</li>
<li>(<strong><span style="color: #ff0000;">5</span></strong>) عاملی که حداکثر فرکانس کار برنامه را در یک کامپیوتر مشخص می‌کند، زمان پاسخ (latency) است. برای یافتن حداکثر زمان پاسخ کامپیوترتان می‌توانید یک سری برنامه را اجرا کنید (<a href="http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TweakingSoftwareStepGeneration">اینجا </a>می‌توانید روش تست کردن زمان پاسخ را ببینید). انشاالله در آینده در این باره بیشتر توضیح می‌دهم. شما در این مرحله مقدار پیشفرض را انتخاب کنید.</li>
</ul>
</li>
<p><div id="attachment_303" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/stepconf_main_configs_guide.jpg"><img class="size-medium wp-image-303" title="stepconf_main_configs_guide" src="http://abd.manidea.com/blog/wp-content/uploads/stepconf_main_configs_guide-300x291.jpg" alt="تنظیمات اولیه دستگاه" width="300" height="291" /></a><p class="wp-caption-text">تنظیمات اولیه دستگاه</p></div>
<li style="text-align: justify;">تنظیم پین‌های پورت موازی در این مرحله انجام می‌شود. پورت موازی ۱۲ پین خروجی دارد (PC to Mill) و ۵ پین ورودی (Mill to PC). پین‌های ورودی هم به دو قسمت دیتا (۸ بیت پین‌های ۲ تا ۹) و قسمت کنترل (پین‌ ۱ و پین‌های ۱۴ تا ۱۷) تقسیم می‌شود. در درایور‌ها معمولا سیگنال‌های پالس/جهت به ۸ بیت دیتا (پین‌های ۲ تا ۹) متصل می‌شود. شما نیز بهتر است که درایور خود را به این صورت طراحی کنید. ورودی‌ها نیز برای اتصال کلید‌های ابتدا/انتهای محور‌ها استفاده می‌شوند. این قسمت جزئیات فراوانی دارد و نیاز است که شما راهنمای سازندگان دستگاه (Integrator Manual) را حتما مطالعه کنید. درایور من فقط شامل کنترلر موتور است پس من بقیه سیگنال‌ها را به صورت unused قرار می‌دهم. ترتیب انتخاب سیگنال‌های پالس/جهت و نحوه اتصال آنها به پین‌های پورت موازی کاملا بستگی به نحوه سیم‌کشی شما دارد البته من به جد توصیه می‌کنم که سیم‌کشی‌ها را به یکی از دو شکل Sherline Outputs یا XyLotex انتخاب کنید.
<div id="attachment_305" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/stepconf_pp_setup.jpg"><img class="size-medium wp-image-305" title="stepconf_pp_setup" src="http://abd.manidea.com/blog/wp-content/uploads/stepconf_pp_setup-300x291.jpg" alt="تنظیمات اتصال سیگنال‌ها به پین‌های پورت موازی" width="300" height="291" /></a><p class="wp-caption-text">تنظیمات اتصال سیگنال‌ها به پین‌های پورت موازی</p></div>
<div id="attachment_306" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/stepconf_pp_setup_my_machine.jpg"><img class="size-medium wp-image-306" title="stepconf_pp_setup_my_machine" src="http://abd.manidea.com/blog/wp-content/uploads/stepconf_pp_setup_my_machine-300x291.jpg" alt="تنظیمات پورت پارالل برای درایوری که ساخته‌ام" width="300" height="291" /></a><p class="wp-caption-text">تنظیمات پورت پارالل برای درایوری که ساخته‌ام</p></div></li>
<li style="text-align: justify;">بعد از اتصال سیگنال‌ها به پایه‌های پورت موازی در این مرحله باید تک‌تک محور‌ها تنظیم شوند. در این قسمت نسبت تبدیل پله‌های موتور به حرکت و همچنین حداکثر سرعت/شتاب مشخص می‌شود.
<ul>
<li>(<span style="color: #ff0000;"><strong>1</strong></span>) تعداد پله‌های موتور پله‌ای که در اکثر موتور‌های چهار پل ۲۰۰ است.</li>
<li>(<span style="color: #ff0000;"><strong>2</strong></span>) نسبت افزایش پله‌ها در درایور‌های <a href="http://en.wikipedia.org/wiki/Stepper_motor#Microstepping">میکرواستپ</a>. در این درایور‌ها به کمک PWM تعداد پله‌ها افزایش پیدا می‌کند. در درایور‌های ساده ما این نسبت یک است. البته اگر موتور را در حالت Half-Step درایو کرده باشید می‌توانید این نسبت را ۲ قرار دهید و یا به صورت مشابه تعداد پله‌ها را ۴۰۰ قرار دهید.</li>
<li>(<span style="color: #ff0000;"><strong>3</strong></span>) نسبت تسمه انتقال موتور (در صورتی که در دستگاه‌تان همچین چیزی وجود دارد)</li>
<li>(<span style="color: #ff0000;"><strong>4</strong></span>) گام میل‌پیچ/بال‌اسکرو</li>
<li>(<span style="color: #ff0000;"><strong>5</strong></span>) حداکثر سرعت محور که وابسته به موتور، درایور، سیستم‌ انتقال نیرو و &#8230; است. روشی برای محاسبه حداکثر سرعت وجود ندارد بلکه باید با آزمایش کردن دستگاه‌ این سرعت را پیدا کنید.</li>
<li>(<span style="color: #ff0000;"><strong>6</strong></span>) حداکثر شتاب که حداکثر سرعت تغییرات محور از حالت سکون به حداکثر سرعت را مشخص می‌کند. دقت کنید ممکن است سیستم شما بتواند حداکثر سرعت ۱۰ واحد داشته باشد ولی نمی‌تواند به سرعت از حالت سکون به این حداکثر سرعت دست پیدا کند. این پارامتر نیز کاملا با امتحان کردن دستگاه به دست می‌آید.</li>
<li>(<span style="color: #ff0000;"><strong>7</strong></span>) مختصات نقطه صفر/خانه. این نقطه معمولا با کلید مشخص می‌شود و در مختصات دستگاه نقطه صفر است (نیاز به مطالعه بیشتری در این زمینه دارم، برای کسب اطلاعات بیشتر کتاب راهنمای سازنده دستگاه Itegrator Manual را مطالعه نمایید).</li>
<li>(<span style="color: #ff0000;"><strong>8</strong></span>) محدوده حرکت محور (کورس دستگاه)</li>
<li>(<span style="color: #ff0000;"><strong>9</strong></span>) تنظیمات کلید نقطه صفر/خانه. همان طور که گفتم این نقطه با کلید مشخص می‌شود و تنظیمات خاصی نیاز دارد (نیاز به مطالعه بیشتر).</li>
<li>(<span style="color: #ff0000;"><strong>10</strong></span>) مقادیر محاسبه شده برای راهنمایی شما.
<ul>
<li>زمانی که طول می‌کشد تا محور به حداکثر سرعت برسد (Time to accelerate to max speed)</li>
<li>فاصله طی شده برای رسیدن به حداکثر سرعت (Distance to accelerate to max speed)</li>
<li>فرکانس ارسالی برای درایور موتور پله‌ای در حداکثر سرعت (Pulse rate at max speed)</li>
<li>مقیاس محور (Axis SCALE) به این معنی که هر میلیمتر حرکت محور به چند پالس موتور نیاز دارد. در واقع تنظیمات ۱ تا ۴ برای محاسبه همین نسبت هستند. محاسبه نیز خیلی ساده است کافی است که مقادیر ۱ تا ۳ را در هم ضرب کنید و نتیجه را بر مقدار ۴ تقسیم کنید.</li>
</ul>
</li>
<li>(<span style="color: #ff0000;"><strong>11</strong></span>) تست تنظیمات این محور. تنظیمات خود را برای محور مورد نظرتان در اینجا می‌توانید به راحتی تست کنید. و در صورت لزوم حداکثر سرعت و شتاب را به روز کنید.
<p><div id="attachment_309" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/stepconf_axis_setting_guide.jpg"><img class="size-medium wp-image-309" title="stepconf_axis_setting_guide" src="http://abd.manidea.com/blog/wp-content/uploads/stepconf_axis_setting_guide-300x291.jpg" alt="تنظیمات محور‌ دستگاه" width="300" height="291" /></a><p class="wp-caption-text">تنظیمات محور‌ دستگاه</p></div>
<div id="attachment_310" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/stepconf_axis_test.jpg"><img class="size-medium wp-image-310" title="stepconf_axis_test" src="http://abd.manidea.com/blog/wp-content/uploads/stepconf_axis_test-300x224.jpg" alt="آزمایش محور" width="300" height="224" /></a><p class="wp-caption-text">آزمایش محور</p></div></li>
</ul>
</li>
<li>تنظیمات را برای بقیه محور‌ها نیز به همین صورت تکمیل کنید. بعد از این تنظیمات کار برنامه  Stepconf به پایان می‌رسد.
<p><div id="attachment_311" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/stepconf_finished.jpg"><img class="size-medium wp-image-311" title="stepconf_finished" src="http://abd.manidea.com/blog/wp-content/uploads/stepconf_finished-300x292.jpg" alt="انتهای برنامه Stepconf" width="300" height="292" /></a><p class="wp-caption-text">انتهای برنامه Stepconf</p></div></li>
<li style="text-align: justify;">اکنون نوبت به اجرای برنامه EMC است. از منوی اصلی برنامه را اجرا کنید. در اولین پنجره برنامه لیست تنظیمات موجود را برای انتخاب نشان می‌دهد. تنظیماتی که در برنامه Stepconf انجام داده‌اید باید در قسمت My Configuration با نامی که برای آن انتخاب کرده‌اید، قرار گرفته باشد. می‌توانید با فعال کردن Create Desktop Shortcut یک میان‌بر درست کنید که نیازی نباشد در هر بار در ابتدا این پنجره را ببینید.
<p><div id="attachment_312" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/select_emc_from_menu.jpg"><img class="size-medium wp-image-312" title="select_emc_from_menu" src="http://abd.manidea.com/blog/wp-content/uploads/select_emc_from_menu-300x138.jpg" alt="اجرای برنامه EMC از منوی اصلی" width="300" height="138" /></a><p class="wp-caption-text">اجرای برنامه EMC از منوی اصلی</p></div>
<div id="attachment_313" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/select_machine.jpg"><img class="size-medium wp-image-313" title="select_machine" src="http://abd.manidea.com/blog/wp-content/uploads/select_machine-300x193.jpg" alt="انتخاب تنظیمات دستگاه CNC در ابتدای اجرای EMC" width="300" height="193" /></a><p class="wp-caption-text">انتخاب تنظیمات دستگاه CNC در ابتدای اجرای EMC</p></div></li>
<li>برنامه EMC اجرا می‌شود و آماده ماشین‌کاری است. محیط برنامه جزئیات فراوانی دارد که باید در پستی جداگانه بررسی شود، ولی محیط ساده‌ای دارد که با کمی کار با آن به سرعت می‌توانید از تمام قسمت‌ها به سادگی استفاده کنید.</li>
</ul>
<p><div id="attachment_314" class="wp-caption aligncenter" style="width: 310px"><a href="http://abd.manidea.com/blog/wp-content/uploads/emc_gui_axis.jpg"><img class="size-medium wp-image-314" title="emc_gui_axis" src="http://abd.manidea.com/blog/wp-content/uploads/emc_gui_axis-300x193.jpg" alt="محیط برنامه EMC با رابط گرافیکی AXIS" width="300" height="193" /></a><p class="wp-caption-text">محیط برنامه EMC با رابط گرافیکی AXIS</p></div>
]]></content:encoded>
			<wfw:commentRss>http://abd.manidea.com/blog/archives/319/feed</wfw:commentRss>
		</item>
		<item>
		<title>مقدمه‌ای بر Asymptote و آزمایش نهایی کنترلر CNC</title>
		<link>http://abd.manidea.com/blog/archives/255</link>
		<comments>http://abd.manidea.com/blog/archives/255#comments</comments>
		<pubDate>Thu, 11 Sep 2008 21:10:21 +0000</pubDate>
		<dc:creator>عبد</dc:creator>
		
		<category><![CDATA[CNC]]></category>

		<category><![CDATA[برنامه‌ کاربردی]]></category>

		<category><![CDATA[Asymptote]]></category>

		<category><![CDATA[at]]></category>

		<category><![CDATA[atx]]></category>

		<guid isPermaLink="false">http://abd.manidea.com/blog/?p=255</guid>
		<description><![CDATA[حدود یک هفته پیش مدار‌هایی که برای کنترلر CNC درست کرده بودم را کمی مرتب کردم و روی یک تکه چوب نصب کردم. این مرتب سازی در واقع سیم‌کشی‌های منبع تغذیه و اتصال مدار‌های توان به مدار کنترلر است. برای تغذیه این مدار هم از دو پاور کامپیوتر که قبلا درست کرده بودم استفاده می‌کنم.
مدار [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">حدود یک هفته پیش مدار‌هایی که برای کنترلر CNC درست کرده بودم را کمی مرتب کردم و روی یک تکه چوب نصب کردم. این مرتب سازی در واقع سیم‌کشی‌های منبع تغذیه و اتصال مدار‌های توان به مدار کنترلر است. برای تغذیه این مدار هم از دو پاور کامپیوتر که قبلا درست کرده بودم استفاده می‌کنم.<span id="more-255"></span></p>
<p style="text-align: justify;">مدار کنترل به ولتاژ ۵ ولت نیاز دارد ولی قسمت پاور که موتور‌ها را راه‌اندازی می‌کند، به ولتاژ ۱۲ ولت نیز برای راه‌اندازی ماسفت‌ها نیاز دارد. ولتاژ خود موتور‌ها ۱۲ ولت است و در مجموع به ۴.۵ آمپر نیاز دارد (۱.۵ آمپر برای هر موتور). پاور ATX برای تغذیه موتور‌ها و پاور AT برای تغذیه مدار‌ها استفاده شده است. برای سیم‌کشی هم از سیم‌های باقیمانده از تغییر پاور استفاده کردم (هیچ وقت همچین خرت و پرت‌هایی را دور نریزید، شک نکنید اگر کمی <a href="http://fa.wikipedia.org/wiki/%DA%AF%DB%8C%DA%A9">گیک</a> باشید حتما روزی به درد شما خواهد خورد). برای اتصال پاور به مدار از ترمینال برق استفاده کرده‌ام، اینطوری اتصال سیم‌ها کمی مرتب‌تر و تمیز‌تر می‌شود.</p>
<p style="text-align: justify;">
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/com-cir-2.jpg"><img class="size-medium wp-image-256 aligncenter" title="com-cir-2" src="http://abd.manidea.com/blog/wp-content/uploads/com-cir-2-300x224.jpg" alt="" width="300" height="224" /></a></p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/com-power1.jpg"><img class="size-medium wp-image-257 aligncenter" title="com-power1" src="http://abd.manidea.com/blog/wp-content/uploads/com-power1-225x300.jpg" alt="" width="225" height="300" /></a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">اکنون همه‌ چیز آماده است که سه استپر موتور را با کامپیوتر تست کنم. برای مشاهده‌ بهتر چرخیدن موتور‌های (و از سر بی‌کاری!) چند دایره سیاه‌ سفید پرینت کرده‌ام و روی موتور‌ها چسباندم که چرخش موتور‌ها بهتر به چشم بیاید:</p>
<p style="text-align: justify;">
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/movie.jpg"><img class="size-full wp-image-260 aligncenter" title="movie" src="http://abd.manidea.com/blog/wp-content/uploads/movie.jpg" alt="" width="160" height="120" /></a></p>
<p style="text-align: right;"><a href="http://abd.manidea.com/blog/wp-content/uploads/1.avi"><br />
</a></p>
<p style="text-align: right;">ویدیو چرخش سه موتور را از <a href="http://abd.manidea.com/blog/wp-content/uploads/1.avi">اینجا</a> دریافت کنید (حجم 453K).</p>
<p style="text-align: right;">
<h3 style="text-align: right;">برای کشیدن این دایره‌ها از چه ابزاری باید استفاده کرد؟</h3>
<p style="text-align: justify;">در اولین قدم ابزار‌های گرافیکی به نظر مناسب می‌رسند ولی خوب لینوکسی بودن شما را طرفدار ابزار‌های متنی می‌کند. یکی از این ابزار‌ها Asymptote است. این ابزار در واقع یک Vector Graphics Language یا زبان برداری گرافیکی (درست ترجمه کردم؟) است. به این معنی که شما اشکال مورد نظرتان را را با یک زبان اسکریپتی رسم می‌کنید. ویژگی خیلی مهم asy این است که فرمت اسکریپت ‌آن مانند زبان C است.</p>
<p style="text-align: justify;">دایره‌های من یک مثال مناسب و البته خیلی ساده برای معرفی asy است. فرض کنید که من می‌خواهم دوایر زیر را رسم کنم:</p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/circles.gif"><img class="size-medium wp-image-261 aligncenter" title="circles" src="http://abd.manidea.com/blog/wp-content/uploads/circles-94x300.gif" alt="" width="94" height="300" /></a></p>
<p style="text-align: right;">فایلی که برای این کشیدن این تصویر نوشته شده است خیلی ساده است (فایل را از <a href="http://abd.manidea.com/projects/cnc/circles.asy">اینجا</a> دریافت کنید):</p>
<p style="text-align: left;" dir="ltr"><strong>1</strong> size(700);<br />
<strong>2</strong> void drawcir(pair base,int parts) {<br />
<strong>3</strong> draw(circle(base,1),linewidth(0.5mm));<br />
<strong>4</strong> for(int i=0;i&lt;parts;i=i+2) {<br />
<strong>5</strong> filldraw(base&#8211;arc(base,1,(360/parts)*i,(360/parts)*(i+1))&#8211;cycle,black);<br />
<strong>6</strong> }<br />
<strong>7</strong> }<br />
<strong>8</strong> drawcir((1,1),8);<br />
<strong>9</strong> drawcir((1,3.2),16);<br />
<strong>10</strong> drawcir((1,5.4),32);</p>
<p style="text-align: right;"><em><strong>خط ۱:</strong></em>اولین دستور (size) ابعاد تصویر را مشخص می‌کنه به این معنی که اندازه هر واحد از تصویر بعد از این دستور ۷۰۰ پیکسل خواهد بود.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong><em>خط ۲:</em></strong>چون شکل تصویر کاملا منظم است (دقت کنید که این ابزار مناسب رسم اشکالی است که تا حدی منظم باشند)، کشیدن هر دایره را به صورت یک تابع (drawcir) در نظر گرفته شده است. این تابع دو پارامتر دارد، base که نقطه مرکزی دایره را نشان می‌دهد و parts که تعداد قسمت‌های سیاه سفید را مشخص می‌کند.</p>
<p style="text-align: justify;"><strong><em>خط ۳:</em></strong>در داخل تابع اولین دستور draw برای کشیدن مسیر‌ها استفاده می‌شود. مسیر ما در این حالت یک دایره (circle) است که مرکز آن base است و شعاع آن یک واحد است. دستور draw پارامتر‌های فراوانی دارد که یکی از آنها ضخامت خط است (linewidth).</p>
<p style="text-align: justify;"><strong><em>خط ۴:</em></strong> حالا برای کشیدن قسمت‌های سیاه سفید نیاز به یک حلقه داریم. این حلقه در واقع رسم کننده قسمت‌های مشکی است که نصف تعداد parts هستند.</p>
<p style="text-align: justify;"><em><strong>خط ۵:</strong></em> این قسمت قلب این کد است. filldraw مانند draw یک مسیر را رسم میکند ولی علاوه بر آن داخل آن را پر می‌کند (در اینجا به صورت ساده فقط با رنگ مشکی و به صورت یکنواخت پر می‌شود). مسیر ما (قطاع‌های مشکی) از base شروع می‌شوند و با یک خط صاف (&#8211;) به ابتدای کمان (arc) می‌رسند. پارامتر‌های کمان هم به ترتیب مرکز کمان، زاویه شروع و زاویه پایان است. در انتها نیز مسیر باید بسته شود و به جای ابتدایی باز گردد (cycle).</p>
<p style="text-align: justify;"><strong><em>خط ۸-۱۰: </em></strong>فراخوانی تابع برای کشیدن سه دایره.</p>
<p style="text-align: justify;">حالا باید فایل را با صدا زدن asy کامپایل کنید. دقت کنید که فرمت خروجی پیشفرض eps است. شما می‌توانید با سوئیچ f- فرمت خروجی مورد نظر خودتون را مشخص کنید:</p>
<p style="text-align: left;" dir="ltr">asy circles.asy -f gif</p>
<p style="text-align: justify;">این فقط یک نمونه خیلی ساده برای asy بود که به هیچ عنوان نمی‌تواند حق مطلب را درباره این برنامه فوق‌العاده بیان کند. حتما سری به سایت asy در <a href="http://asymptote.sourceforge.net/">اینجا</a> بزنید. علاوه بر این گالری اشکال تولید شده را نیز در <a href="http://asymptote.sourceforge.net/gallery/">اینجا</a> از دست ندهید!</p>
<p style="text-align: justify;">این هم یک مثال زیبا از گالری به نام <a href="http://en.wikipedia.org/wiki/Pythagoras_tree">درخت پیتاگوراس</a> (البته من تغییرش داده‌ام و کمی احتمالات به آن اضافه کرده‌ام) بر پایه روابط بازگشتی و <a href="http://http://en.wikipedia.org/wiki/Fractal">فرکتال‌ها</a>.</p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/t2.gif"><img class="size-full wp-image-263 aligncenter" title="t2" src="http://abd.manidea.com/blog/wp-content/uploads/t2.gif" alt="" width="251" height="201" /></a></p>
<p style="text-align: right;">* دوستان لینوکس کار می‌توانند این برنامه را به سادگی از مخازن نصب کنند. دوستان ویندوزی هم نگران نباشند نسخه ویندوز نیز وجود دارد.</p>
]]></content:encoded>
			<wfw:commentRss>http://abd.manidea.com/blog/archives/255/feed</wfw:commentRss>
<enclosure url="http://abd.manidea.com/blog/wp-content/uploads/1.avi" length="463486" type="video/x-msvideo" />
		</item>
		<item>
		<title>تبدیل پاور کامپیوتر به یک منبع تغذیه خوب!</title>
		<link>http://abd.manidea.com/blog/archives/227</link>
		<comments>http://abd.manidea.com/blog/archives/227#comments</comments>
		<pubDate>Fri, 22 Aug 2008 10:37:02 +0000</pubDate>
		<dc:creator>عبد</dc:creator>
		
		<category><![CDATA[الکترونیک]]></category>

		<category><![CDATA[at]]></category>

		<category><![CDATA[atx]]></category>

		<category><![CDATA[منبع تغذیه]]></category>

		<category><![CDATA[پاور کامپیوتر]]></category>

		<guid isPermaLink="false">http://abd.manidea.com/blog/?p=227</guid>
		<description><![CDATA[اگر یک پاور کامپیوتر دم دستتون هست، و یا یک منبع تغذیه خوب و ارزان می‌خواهید خوب شک نکنید، پاور خودتون رو به یک منبع تغذیه حسابی تبدیل کنید.

مقدمه

هشدار  مطالب این پست به علت سادگی فراوان ممکن است به شما بربخورد به خصوص اگر حرفه‌ای باشید و یا حداقل خود را حرفه‌ای بدانید.
من اولین [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">اگر یک پاور کامپیوتر دم دستتون هست، و یا یک منبع تغذیه خوب و ارزان می‌خواهید خوب شک نکنید، پاور خودتون رو به یک منبع تغذیه حسابی تبدیل کنید.</p>
<p><span id="more-227"></span></p>
<h2>مقدمه</h2>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>هشدار </strong> <span style="color: #ff0000;">مطالب این پست به علت سادگی فراوان ممکن است به شما بربخورد به خصوص اگر حرفه‌ای باشید و یا حداقل خود را حرفه‌ای بدانید.</span></p>
<p style="text-align: justify;">من اولین <a href="http://en.wikipedia.org/wiki/Power_supply">منبع تغذیه</a> خودم را حدود ۱۱ سال قبل وقتی سوم راهنمایی بودم درست کردم (در واقع سر هم بندی کردم). یک آداپتور با ولتاژ متغیر را باز کردم و در یک جعبه با کلید سلکتور قرار دادم. در آن موقع به نسبت خروجی جالبی داشت و من هم تا مدت‌ها از آن استفاده می‌کردم.</p>
<table style="text-align: justify;" border="0">
<tbody>
<tr>
<td><a href="http://abd.manidea.com/blog/wp-content/uploads/c1-r.jpg"><img class="alignnone size-thumbnail wp-image-229" title="c1-r" src="http://abd.manidea.com/blog/wp-content/uploads/c1-r-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://abd.manidea.com/blog/wp-content/uploads/c1-r.jpg"> </a></td>
<td>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/c2-r.jpg"><img class="alignnone size-thumbnail wp-image-230" title="c2-r" src="http://abd.manidea.com/blog/wp-content/uploads/c2-r-150x150.jpg" alt="" width="150" height="150" /></a></p>
</td>
<td><a href="http://abd.manidea.com/blog/wp-content/uploads/c3-r.jpg"><img class="alignnone size-thumbnail wp-image-231" title="c3-r" src="http://abd.manidea.com/blog/wp-content/uploads/c3-r-150x150.jpg" alt="" width="150" height="150" /></a></td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">
<p style="text-align: justify;">ولی خوب با بزرگتر و جدی‌تر شدن مدار‌ها نیاز به یک منبع جدی‌تر داشتم! استفاده از منبع بالا ادامه داشت تا اینکه به صورت اتفاقی به سراغ کامپیوتر خیلی قدیمی ۴۸۶ام رفتم و پاور <a href="http://en.wikipedia.org/wiki/AT_form_factor">AT</a> آن رو برداشتم. خوب این پاور خیلی خوب کار می‌کرد و خروجی‌های +۵، +۱۲، -۱۲، -۵  جریان‌ مناسب داشت! بعد از مدتی برای اینکه بتوانم به راحتی از خروجی‌های آن استفاده کنم، پاور بیچاره را به این شکل در‌آوردم.</p>
<p style="text-align: justify;">
<table style="text-align: center; height: 44px;" border="1" width="546">
<tbody>
<tr>
<td>Max Power</td>
<td dir="ltr">-12V</td>
<td dir="ltr">-5V</td>
<td dir="ltr">+12V</td>
<td dir="ltr">+5V</td>
<td>Max Amp</td>
</tr>
<tr>
<td dir="ltr">65W</td>
<td dir="ltr">0.3A</td>
<td dir="ltr">0.11A</td>
<td dir="ltr">2.0A</td>
<td dir="ltr">9.5A</td>
<td>Voltage</td>
</tr>
</tbody>
</table>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/at-r.jpg"><img class="size-medium wp-image-233 aligncenter" title="at-r" src="http://abd.manidea.com/blog/wp-content/uploads/at-r-300x287.jpg" alt="" width="300" height="287" /></a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">خوب من در فکر استفاده از یک پاور <a href="http://en.wikipedia.org/wiki/Atx">ATX</a> جدید بودم. تا اینکه چند وقت قبل (بهتره بگم چند سال قبل) یه پاور ATX دستم رسید. برای بعضی از کار‌ها نیز از همین پاور استفاده می‌کردم تا اینکه چند روز پیش تنبلی را  کنار گذاشتم و این پاور ATX را هم به فرم پاور AT درآوردم. با یک جستجوی در گوگل شما می‌توانید دها نفر را پیدا کنید که پاور کامپیوتر را به شکل یک منبع تغذیه رومیزی استفاده می‌کنند به عنوان مثال در <a href="http://www.brianhassel.com/projects.html">اینجا،</a> <a href="http://www.instructables.com/id/ATX--&gt;-Lab-Bench-Power-Supply-Conversion/">اینجا</a>، <a href="http://www.pasqualy.com/PowerSupply/">اینجا</a> و <a href="http://www.wikihow.com/Convert-a-Computer-ATX-Power-Supply-to-a-Lab-Power-Supply">اینجا</a>.</p>
<h2 style="text-align: justify;">مراحل ساخت</h2>
<p style="text-align: justify;">این تبدیل (تبدیل پاور کامپیوتر به یک منبع تغذیه رومیزی) کار ساده‌ای است و فقط به قطعات زیر نیاز دارد:</p>
<p style="text-align: justify;">۱. <strong>کانکتور منبع تغذیه:</strong> (اسم بازاری این کانکتور‌ها رو نمی‌دونم!) شما برای پاور ATX حداقل ۶تا کانتور نیاز دارید البته ممکن است بخواهید برای بعضی ولتاژها چند کانکتور‌ قرار بدهید و یا یک یک خروجی خاص دیگر را هم اضافه کنید.</p>
<p style="text-align: justify;">۲. <strong>مقاومت ۱۰ اهم ۱۰ وات</strong>: این مقاومت یک مصرف کننده الکی هست (<a href="http://en.wikipedia.org/wiki/Dummy_load">dummy load</a>) که به ولتاژ ۵ ولت متصل می‌شود! چون در بعضی از پاور‌ها اگر یک مصرف کننده وجود نداشته باشد پاور بعد از مدتی خاموش می‌شود. البته در پاور‌های جدید معمولا این مشکل وجود ندارد.</p>
<p style="text-align: justify;">۳. <strong>کلید روشن/خاموش</strong>: پاور‌های ATX برای روشن شدن یک سیم کنترلی (DC-ON و یا PS-ON) دارند که باید به زمین متصل شود. در مادربورد کامپوتر نیز وقتی که دکمه اصلی زده می‌شود مادربورد این سیم کنترلی را به زمین متصل می‌کند. در این مرحله فن پاور روشن می‌شود و کامپیوتر به راه می‌افتد. خوب این کلید نیز برای همین کار است و بین سیم‌های سبز و مشکی متصل می‌شود.</p>
<p style="text-align: justify;">۴. <strong>دیود نورانی (LED) به همراه یک مقاومت:</strong> برای مشخص شدن روشن بودن پاور می‌توان از یک دیود استفاده کرد. این دیود به سیم power-good متصل می‌شود که در واقع مشخص کننده عملکرد صحیح پاور است و می‌توان با یک دیود وضعیت این سیم را مشخص کرد.</p>
<p style="text-align: justify;">قبل از اینکه به سراغ مراحل بعدی برویم باید با رنگ سیم‌های پاور آشنا شویم.</p>
<table style="height: 184px; text-align: justify;" border="1" width="140">
<tbody>
<tr>
<td bgcolor="black"><span style="color: #ffffff;">مشکی</span></td>
<td style="text-align: left;" dir="ltr">GND</td>
</tr>
<tr>
<td bgcolor="orange">نارنجی</td>
<td style="text-align: left;" dir="ltr">+3.3V</td>
</tr>
<tr>
<td bgcolor="red">قرمز</td>
<td style="text-align: left;" dir="ltr">+5V</td>
</tr>
<tr>
<td bgcolor="yellow">زرد</td>
<td style="text-align: left;" dir="ltr">+12V</td>
</tr>
<tr>
<td bgcolor="blue">آبی</td>
<td style="text-align: left;" dir="ltr">-12V</td>
</tr>
<tr>
<td bgcolor="white">سفید</td>
<td style="text-align: left;" dir="ltr">-5V</td>
</tr>
<tr>
<td bgcolor="green">سبز</td>
<td style="text-align: left;" dir="ltr">PS-ON</td>
</tr>
<tr>
<td bgcolor="gray">خاکستری</td>
<td style="text-align: left;" dir="ltr">P-GOOD</td>
</tr>
<tr>
<td bgcolor="purple">بنفش</td>
<td style="text-align: left;" dir="ltr">+5VSB</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">ولتاژ 5VSB قبل از روشن شدن پاور وجود دارد (البته جریان کمی می‌تواند فراهم کند). اگر علاق دارید می‌توانید این ولتاژ را نیز به کانکتور‌های خروجی متصل کنید.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><span style="color: #ff0000;"><strong>اخطار:خطر برق‌گرفتگی کشنده! </strong><strong>د</strong>قت کنید که خازن‌های بزرگی در ورودی پاور وجود دارد که تا ولتاژ حدود ۳۰۰ ولت شارژ می‌شوند. این شارژ ممکن است حتی بعد از خاموش کردن پاور در خازن‌ها باقی بماند و شکی خطرناک و مرگبار به شما وارد شود! برای تخلیه خازن‌ها می‌توان به کمک یک قطعه فلزی دو سر خازن‌ها را اتصال کوتاه کرد. </span></p>
<p style="text-align: justify;">خوب حالا باید پاور را باز کنیم تا بتوانیم قسمت‌های بعدی را شروع کنیم.</p>
<p style="text-align: justify;">
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/p1r.jpg"><img class="size-thumbnail wp-image-242 aligncenter" title="p1r" src="http://abd.manidea.com/blog/wp-content/uploads/p1r-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">اکنون به قسمت سخت کار می‌رسیم، سوراخ کاری! در این مرحله سوراخ‌های کانکتور‌ها (احتمالا به صورت استاندارد ۸ میلیمتری است)، کلید (اندازه سوراخ‌کاری بسته به شکل کلید است) و دیود‌نورانی (مته ۳ یا ۵ میلیمتری، البته می‌توانید از فضای خالی خود بدنه نیز برای دیود استفاده کنید) باید ایجاد شود.</p>
<p style="text-align: justify;">
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/p2r.jpg"><img class="size-thumbnail wp-image-243 aligncenter" title="p2r" src="http://abd.manidea.com/blog/wp-content/uploads/p2r-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">بعد از این مرحله باید به سراغ اتصالات سیم‌ها برویم. من برای اینکه افت احتمالی در جریان بالا ایجاد نشود برای ولتاژهای اصلی (5 12 3.3 GND) حداقل ۴ سیم به صورت موازی در نظر گرفته‌ام. پاور‌ها برای ولتاژهای اصلی چندین سیم دارند که شما می‌توانید از تعدادی از آنها استفاده کنید و بقیه را از انتها قطع کنید. شکل سیم‌کشی‌هایی پاور من به صورت زیر است. در این حالت می‌توانید تعداد سیم‌های مورد نیاز برای هر کدام از ولتاژها را از ابتدا مشخص کنید و سپس سیم‌های اضافه را با سیم‌چین قطع کنید.</p>
<p style="text-align: justify;">
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/atx.png"><img class="size-medium wp-image-246 aligncenter" title="atx" src="http://abd.manidea.com/blog/wp-content/uploads/atx-300x195.png" alt="" width="300" height="195" /></a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">یک مقاومت ۱۰ اهم ۱۰ وات نیز بهتر‌ است که به عنوان یک مصرف کننده به ولتاژ ۵ متصل شود. البته حدس می‌زنم که در پاور‌های جدید نیازی به این مقاومت نباشد و پاور بتواند بدون اینکه مصرف کننده‌ای داشته باشد، روشن بماند. مقاومت‌هایی با این توان معمولا به صورت آجری می‌باشند ولی مقاومتی با این مشخصات دم دست من نبود، من هم تنبل‌تر از آن هستم که بروم مرکز شهر و این مقاومت را تهیه کنم! خوب پس بعد از گشتن در میان قطعاتی که داشتم، یک سری مقاومت ۲.۷ اهم ۲ وات پیدا کردم. خوب عالی شد! چهارتا از این مقاومت‌ها را با هم سری کردم و یک مقاومت ۱۰/۸ اهم ۸ وات درست کردم که قابل قبول به حساب می‌آید. توان تلف شده بر روی این مقاومت به حدود ۲.۳ وات می‌رسد که حسابی باعث داغ شدن مقاومت‌ها می‌شود. به همین دلیل مقاومت را تقریباً به بدنه فلزی پاور متصل کردم که تا حدودی گرمای تولید شده را دفع کند.</p>
<p style="text-align: justify;">
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/res1.jpg"><img class="size-medium wp-image-247 aligncenter" title="res1" src="http://abd.manidea.com/blog/wp-content/uploads/res1.jpg" alt="" width="282" height="142" /></a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">می‌توان از وارنیش حرارتی و چسب برق (لنت) برای پوشاندن قسمت‌هایی از سیم‌هایی که ممکن است اتصالی کنند، استفاده کرد. برای اتصال دیود نورانی و مقاومت ۱۰ اهمی، از چسب حرارتی نیز می‌توان استفاده کرد. با وصل کردن کانکتور‌ها،‌ مقاومت، دیود نورانی و کلید می‌توان گفت که ساخت پاور تقریبا تمام شده است.بهتر است توضیحاتی برای  ولتاژ کانکتور‌ها در جلوی پاور چسبانیده شود.</p>
<p style="text-align: center;">
<table style="text-align: center; height: 44px;" border="1" width="546">
<tbody>
<tr>
<td>Max Power</td>
<td dir="ltr">+5VSB</td>
<td dir="ltr">-12V</td>
<td dir="ltr">-5V</td>
<td dir="ltr">+12V</td>
<td dir="ltr">+5V</td>
<td dir="ltr">+3.3V</td>
<td>Max Amp</td>
</tr>
<tr>
<td dir="ltr">≈200W</td>
<td dir="ltr">1A</td>
<td dir="ltr">0.3A</td>
<td dir="ltr">0.3A</td>
<td dir="ltr">8A</td>
<td dir="ltr">8A</td>
<td dir="ltr">8A</td>
<td style="text-align: center;">Voltage</td>
</tr>
</tbody>
</table>
<table style="height: 314px; text-align: center;" border="0" width="316">
<tbody>
<tr>
<td><a href="http://abd.manidea.com/blog/wp-content/uploads/open1.jpg"><img class="aligncenter size-thumbnail wp-image-249" title="open1" src="http://abd.manidea.com/blog/wp-content/uploads/open1-150x150.jpg" alt="" width="150" height="150" /></a></td>
<td><a href="http://abd.manidea.com/blog/wp-content/uploads/inside1.jpg"><img class="aligncenter size-thumbnail wp-image-250" title="inside1" src="http://abd.manidea.com/blog/wp-content/uploads/inside1-150x150.jpg" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td><a href="http://abd.manidea.com/blog/wp-content/uploads/front1.jpg"><img class="aligncenter size-thumbnail wp-image-251" title="front1" src="http://abd.manidea.com/blog/wp-content/uploads/front1-150x150.jpg" alt="" width="150" height="150" /></a></td>
<td><a href="http://abd.manidea.com/blog/wp-content/uploads/newatx1.jpg"><img class="aligncenter size-thumbnail wp-image-252" title="newatx1" src="http://abd.manidea.com/blog/wp-content/uploads/newatx1-150x150.jpg" alt="" width="150" height="150" /></a></td>
</tr>
</tbody>
</table>
<p style="text-align: right;">با یک منبع تغذیه ATX ولتاژهای متقارن 12± 5± و ولتاژهای 5+ 12+ 3.3+ در دسترس شما است ولی می‌توانید با سری کردن ولتاژهای مثبت منفی ولتاژهای 8.3 10 15.3 17 24 را نیز داشته باشید. علاوه بر این من می‌توانم این پاور ATX را با پاور AT قبلی خودم سری کنم و ولتاژهای دیگری نیز درست کنم.</p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/powers1.jpg"><img class="aligncenter size-thumbnail wp-image-253" title="powers1" src="http://abd.manidea.com/blog/wp-content/uploads/powers1-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p style="text-align: right;">قدم بعدی می‌تواند درست کردن یک مدار تبدیل DC/DC با ولتاژ متغیر باشد که به پاور متصل می‌شود.</p>
]]></content:encoded>
			<wfw:commentRss>http://abd.manidea.com/blog/archives/227/feed</wfw:commentRss>
		</item>
		<item>
		<title>درایور موتور پله‌ای برای CNC (قسمت سوم)</title>
		<link>http://abd.manidea.com/blog/archives/199</link>
		<comments>http://abd.manidea.com/blog/archives/199#comments</comments>
		<pubDate>Sun, 17 Aug 2008 14:12:01 +0000</pubDate>
		<dc:creator>عبد</dc:creator>
		
		<category><![CDATA[CNC]]></category>

		<category><![CDATA[الکترونیک]]></category>

		<category><![CDATA[attiny2313]]></category>

		<category><![CDATA[AVR]]></category>

		<category><![CDATA[EMC]]></category>

		<category><![CDATA[linuxCNC]]></category>

		<guid isPermaLink="false">http://abd.manidea.com/blog/?p=199</guid>
		<description><![CDATA[سیگنال‌های دریافتی از پورت پارالل به شکل پله/جهت (step/direction) هستند. این سیگنال‌ها باید به صورت چهار پالس برای پایه‌های موتور پله‌ای دربیاید.

مقدمه
در پست‌های قبلی توضیح مختصری درباره روش راه‌اندازی موتور پله‌ای نوشته‌ام. برای بهتر مشخص شدن عملکرد کنترلر موتور پله‌ای شکل‌ موج سیگنال‌های کنترل موتور را به صورت شکل زیر کشیده‌ام. (دقت کنید که این [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">سیگنال‌های دریافتی از پورت پارالل به شکل پله/جهت (step/direction) هستند. این سیگنال‌ها باید به صورت چهار پالس برای پایه‌های موتور پله‌ای دربیاید.</p>
<p style="text-align: justify;"><span id="more-199"></span></p>
<h3 style="text-align: justify;">مقدمه</h3>
<p style="text-align: justify;">در پست‌های قبلی توضیح مختصری درباره روش راه‌اندازی موتور پله‌ای نوشته‌ام. برای بهتر مشخص شدن عملکرد کنترلر موتور پله‌ای شکل‌ موج سیگنال‌های کنترل موتور را به صورت شکل زیر کشیده‌ام. (دقت کنید که این شکل موج بر اساس روش full-step است نه half-step  البته اصول کلی تفاوت خاصی ندارد):</p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/wave22.gif"><img class="size-full wp-image-202 aligncenter" title="wave22" src="http://abd.manidea.com/blog/wp-content/uploads/wave22.gif" alt="" width="500" height="278" /></a></p>
<p style="text-align: justify;"><a href="http://abd.manidea.com/blog/wp-content/uploads/wave22.gif"><br />
</a></p>
<p style="text-align: justify;">در این شکل دو ورودی پله (step) و جهت (direction) از پورت پارالل می‌آید. پین‌های a تا d نیز خروجی‌های ایجاد شده برای بخش توان (یا همان پایه‌های موتور) است. همان طور که مشخص است چرخش موتور در لبه‌ی بالارونده (و یا پایین‌رونده) پینِ پله صورت می‌گیرد. جهت حرکت نیز با پین جهت مشخص می‌شود. در شکل فوق موتور ۱۲ واحد چرخیده‌ است که در ۵ پله اول به سمت راست (و یا چپ)، و در ۶ پله بعدی به سمت چپ و در پله‌ آخر نیز به سمت راست چرخیده است. سیگنال‌های خروجی نیز به این صورت هستند که، در هر لحظه فقط یکی از آنها (خروجی‌های a تا d) فعال است. فعال بودن در این شکل موج مقدار مثبت در نظر گرفته شده‌ است ولی ممکن است در پیاده‌سازی معکس در نظر گرفته شود (راه‌انداز ماسفت که خروجی به آن متصل می‌شود با سطح منفی ترانزیستور را روشن می‌کند). در هر لبه بالا‌رونده‌ی سیگنال پله، خروجی فعال یک واحد به چپ و یا راست شیفت پیدا می‌کند.  این چپ و یا راست بودن از روی پین جهت مشخص می‌شود.</p>
<h3 style="text-align: justify;">یک سعی ناموفق با CPLD</h3>
<p style="text-align: justify;">کار اصلی کنترلر موتور ایجاد سیگنال‌های a تا d است. به همین علت به این مدار توالی دهنده (sequencer) نیز گفته می‌شود زیرا توالی مورد نیاز موتور را بر اساس سیگنال دریافتی ایجاد می‌کند. برای ساخت این توالی‌دهنده شاید بتوان دها راه پیدا کرد. ساده‌ترین روش استفاده از چیپ‌های TTL و COMS است. ولی من چون می‌خواستم لقمه را دور سرم بگردانم اولین طراحی را با یک <a href="http://en.wikipedia.org/wiki/CPLD">CPLD</a> انجام دادم. انصافا پیاده‌سازی این مدار در CPLD  با یک زبان توصیف سخت‌افزاری (<a href="http://en.wikipedia.org/wiki/Hardware_description_language">Hardware description language</a>)  مانند <a href="http://en.wikipedia.org/wiki/Verilog">Verilog</a> خیلی ساده و لذت بخش است، ولی مشکلات فراوان سخت‌افزاری و نرم‌افزاری برای این مدار وجود داشت. در مجموع این مشکلات باعث شد نمونه‌ای که برای این کار طراحی کرده‌ بودم به درستی کار نکند  و حسابی خستگی چندین روز کار مداوم را بر تن من بگذارد (البته چندین اشتباه تأثیر گذار نیز در طراحی و ساخت بورد نیز وجود داشت). عکس این بورد ناموفق را به عنوان آینه عبرت اینجا قرار می‌دهم!</p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/cpld-board1.jpg"><img class="size-medium wp-image-204 aligncenter" title="cpld-board1" src="http://abd.manidea.com/blog/wp-content/uploads/cpld-board1-300x280.jpg" alt="" width="300" height="280" /></a></p>
<h3 style="text-align: justify;">پیاده‌سازی با AVR</h3>
<p style="text-align: justify;">روش بعدی استفاده از <a href="http://en.wikipedia.org/wiki/Atmel_AVR">AVR</a> است (البته همین روش را به شکلی متفاوت چند سال قبل در کارگاه عمومی دانشگاه برای ساخت CNC  به کار برده بودم که تقریباً جواب هم گرفتم).</p>
<p style="text-align: justify;">اکثر چیپ‌های AVR معمولا دو پین (INT0 و INT1) اینتراپت خارجی یا External Interupt دارند. این پین‌ها می‌توانند حساس به لبه باشند و در صورت دریافت لبه پایین‌رونده (و یا بالا‌رونده) یک اینتراپت ایجاد کنند. این دقیقا چیزی  است که برای موتور پله‌ای به آن نیاز داریم. فقط باید در هر اینتراپت به مقدار پین جهت نیز دقت کنیم چون این پین جهت چرخش را مشخص می‌کند. میکرویی که در این مدار استفاده کردم <a href="http://www.atmel.com/dyn/Products/Product_card.asp?part_id=3229">ATTiny2313</a> است. این میکرو به نسبت پکیج کوچکی دارد (۲۰ پین) و هم سریع است (۲۰ مگ). هر کدام از این میکرو‌ها دو پین ورودی اینتراپت دارند. پس در مجموع برای کنترل ۴ موتور پله‌ای باید از دو عدد ATTiny2313 استفاده کرد.</p>
<p style="text-align: justify;">برای ایزوله‌ کردن پروت پارالل از مدار دوتا <a href="http://en.wikipedia.org/wiki/Optocoupler">اپتوکوپلر</a> (Optocoupler) چهارتایی (tlp521-4) در مدار قرار دادم که در مجموع ۸ پین از پورت پارالل را شامل می‌شود. پین‌های ورودی پورت موازی نیازی به اپتوکوپلر ندارند چون معمولا دکمه‌های ابتدا و انتهای هر محور به آنها متصل می‌شوند و این دکمه‌ها را می‌توان بین زمین و پین پورت متصل کرد (من حدس می‌زنم پورت pull-up داخلی داشته باشد و در حالت معمول مقدار آن ۱ باشد). برای مشخص شدن فعالیت هر کدام از موتور‌ها یک LED هم در مدار قرار دارد. این LED با هر پالس موتور تقریبا چند لحظه چشمک می‌زند.</p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/slc.png"><img class="size-thumbnail wp-image-216 aligncenter" title="slc" src="http://abd.manidea.com/blog/wp-content/uploads/slc-150x150.png" alt="" width="150" height="150" /></a></p>
<p style="text-align: justify;">کد‌های AVR را با زبان C و کامپایلر محبوب gcc نوشته‌ام و با برنامه avrdude نیز بر روی میکرو پروگرم کرده‌ام.</p>
<h3 style="text-align: justify;">ساخت بورد</h3>
<p style="text-align: justify;">نکته‌ی مهمی که در پیاده‌سازی این مدار وجود دارد، لحیم کردن قطعات بر روی سطح است چون یکی از قسمت‌های پر زحمت در ساخت بورد مدار چاپی در خانه، سوراخ‌کاری است. به همین علت من معمولا قطعات بورد را از نوع SMD تهیه می‌کنم (مانند مقاومت‌ها، خازن‌ها و LEDها). ولی خوب خیلی از قطعات به شکل SMD در دسترس من نیست به همین علت هم از تکنولوژی STS (*) استفاده می‌کنم. STS مخفف Solder Through-hole as SMD است به این معنی که قطعات معمول را با کمی تغییر بر روی سطح لحیم کنیم. مثلا در این مدار تنها قطعاتی که به صورت SMD نیستند کانکتور‌های ترمینال، کریستال و دو جامپر است. این روش بیشتر مناسب ساخت بورد به صورت دستی و در خانه است، نه بوردی که PCB آن به صورت حرفه‌ای و صنعتی ایجاد می‌شود. پس دقت کنید اگر می‌خواهید از این بورد استفاده جدی کنید شاید بد نباشد که PCB را از ابتدا و به شکل معمول طراحی کنید.</p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/slc_pcb.png"><img class="size-medium wp-image-217 aligncenter" title="slc_pcb" src="http://abd.manidea.com/blog/wp-content/uploads/slc_pcb-300x196.png" alt="" width="300" height="196" /></a></p>
<p style="text-align: justify;">شکل زیر دو روی بورد آماده‌شده را نشان می‌دهد، چون خیلی فراموش‌کار هستم یک برچسب راهنما بر روی بورد قرار داده‌ام که شماره پین‌های پورت پارالل را برای هر موتور مشخص می‌کند.</p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/maincontroller.jpg"><img class="size-medium wp-image-218 aligncenter" title="maincontroller" src="http://abd.manidea.com/blog/wp-content/uploads/maincontroller-227x300.jpg" alt="" width="227" height="300" /></a></p>
<p style="text-align: justify;">خوب حالا دیگر همه‌ قسمت‌های این کنترلر درست شده است. برای امتحان کردن این کنترلر یکی از مدار‌های توان را که در پست قبلی توضیح دادم به آن متصل کردم و خود کنترلر را نیز با کابل به پورت پارالل وصل کردم و با برنامه <a href="http://www.linuxcnc.org/">EMC</a> موتور‌ را چند دوری چرخاندم. عکس زیر اولین تست را نشان می‌دهد. یک چای داغ هم در عکس انتظار من رو می‌کشه که بعد از جواب گرفتن از مدار آن را بخورم! بفرمایید چای داغ!</p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/test1.jpg"><img class="size-medium wp-image-219 aligncenter" title="test1" src="http://abd.manidea.com/blog/wp-content/uploads/test1-300x224.jpg" alt="" width="300" height="224" /></a></p>
<p style="text-align: justify;">بورد مدار با برنامه gEDA و PCB طراحی شده است.</p>
<p style="text-align: justify;">(<a href="http://abd.manidea.com/projects/cnc/slc_sch.pdf">+</a>) فایل شماتیک مدار به فرمت پی‌دی‌اف.</p>
<p style="text-align: justify;">(<a href="http://abd.manidea.com/projects/cnc/slc_pcb.pdf">+</a>) فایل بورد مدار چاپی به فرمت پی‌دی‌اف.</p>
<p style="text-align: justify;">(<a href="http://abd.manidea.com/projects/cnc/slc.tar.bz2">+</a>) فایل فشرده به فرمت tar.bz2 شامل فایل‌های طراحی بورد و پی‌دی‌اف‌های تولید شده.</p>
<p style="text-align: justify;">(<a href="http://abd.manidea.com/projects/cnc/firmware2313.tar.bz2">+</a>) فایل فشرده به فرمت tar.bz2 شامل firmware میکروکنترلر و همچنین فایل hex تولید شده.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">(*) روش STS یک روش من ‌درآوردی و از شیرین‌کاری‌های خودم است! گول اسمش را نخورید!</p>
]]></content:encoded>
			<wfw:commentRss>http://abd.manidea.com/blog/archives/199/feed</wfw:commentRss>
		</item>
		<item>
		<title>درایور موتور پله‌ای برای CNC (قسمت دوم)</title>
		<link>http://abd.manidea.com/blog/archives/170</link>
		<comments>http://abd.manidea.com/blog/archives/170#comments</comments>
		<pubDate>Fri, 15 Aug 2008 07:43:00 +0000</pubDate>
		<dc:creator>عبد</dc:creator>
		
		<category><![CDATA[CNC]]></category>

		<category><![CDATA[الکترونیک]]></category>

		<category><![CDATA[توان تلف شده]]></category>

		<category><![CDATA[تک‌قطبی]]></category>

		<category><![CDATA[درایور]]></category>

		<category><![CDATA[ماسفت]]></category>

		<category><![CDATA[موتور پله‌ای]]></category>

		<guid isPermaLink="false">http://abd.manidea.com/blog/?p=170</guid>
		<description><![CDATA[همان طور که در پست قبلی گفتم موتور‌های پله‌ای من ۵ سیم دارند و تنها می‌توانند با درایور تک‌قطبی کار کنند. خوب من هم یک درایور تک قطبی درست کردم!

اگر پست قبلی را مطالعه کرده‌باشید (البته اگر هم نخوانده‌اید چیز خاصی را از دست نداده‌اید!) شکل کلی یک درایور تک‌قطبی به این صورت است:

توان تلف [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">همان طور که در پست قبلی گفتم موتور‌های پله‌ای من ۵ سیم دارند و تنها می‌توانند با درایور تک‌قطبی کار کنند. خوب من هم یک درایور تک قطبی درست کردم!</p>
<p style="text-align: justify;"><span id="more-170"></span></p>
<p style="text-align: justify;">اگر پست قبلی را مطالعه کرده‌باشید (البته اگر هم نخوانده‌اید چیز خاصی را از دست نداده‌اید!) شکل کلی یک درایور تک‌قطبی به این صورت است:</p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/unipolar.png"><img class="size-medium wp-image-158 aligncenter" title="unipolar" src="http://abd.manidea.com/blog/wp-content/uploads/unipolar-300x224.png" alt="" width="300" height="224" /></a></p>
<h2 style="text-align: justify;">توان تلف شده در ترانزیستور‌ها توان</h2>
<p style="text-align: justify;">کلید‌های این درایور در واقع ترانزیستور‌های توان هستند که وظیفه عبور دادن جریان را از سیم‌پیچ‌های موتور به عهده دارند. دو خانواده از ترانزیستور‌ها برای این منظور مناسب هستند، ترانزیستور‌های <a href="http://en.wikipedia.org/wiki/Bipolar_junction_transistor" target="_blank">BJT</a> و ترانزیستور‌های <a href="http://en.wikipedia.org/wiki/Power_MOSFET" target="_blank">Power MOSFET</a>. حالا اینکه کدام یک بهتر است و ویژگی‌های هر کدام چیست، از حد سواد من خارج است. ولی من نمی‌دانم چرا علاقه خاصی به این MOSFET  دارم! شاید چون سخت‌افزاری هستم و سر و کار ما ترانزیستور nmos و pmos است&amp; لاجرم به نوع Power شان هم علاقه دارم!<br />
جدا از علاقه قلبی به ماسفت، تلف توان در این نوع ترانزیستور‌ها کمتر از مشابه BJT است. به صورت خیلی ساده توان تلف شده در حالت DC و در حالتی که ترانزیستور‌ها به عنوان کلید عمل می‌کنند، به صورت زیر محاسبه می‌شود:</p>
<p style="text-align: center;"><a href="http://www.codecogs.com"><img class="aligncenter" src="http://www.codecogs.com/gif.latex?P_{BJT}=I\times&amp;space;V_{CE(sat)}" border="0" alt="P_{BJT}=I\times V_{CE(sat)}" /></a></p>
<p style="text-align: center;"><img class="aligncenter" src="http://www.codecogs.com/gif.latex?P_{MOSFET}=I^2\times&amp;space;R_{DS(on)}" border="0" alt="P_{MOSFET}=I^2\times R_{DS(on)}" /></p>
<p style="text-align: justify;">پارامتر مهم برای محاسبه توان DC تلف شده در ترانزیستور BJT ولتاژ اشباع بین کلکتور و امیتر است (Vce) که تقریبا برای یک محدوده از جریان ثابت است. در ترانزیستور‌های MOSFET هم پارامتر مهم مقاومت بین سورس و درین در حالت ON است که به آن Rds گفته می‌شود. اگر بخواهیم یک مقدار دیگر به صورت ریاضی بررسی کنیم شرایط کمتر بودن توان تلف شده در ماسفت نسبت به ترانزیستور قطبی (BJT) با یک محاسبه ساده به این صورت بدست می‌آید:</p>
<p style="text-align: center;"><a href="http://www.codecogs.com"><img class="aligncenter" src="http://www.codecogs.com/gif.latex?I&lt;\frac{V_{CE(sat)}}{R_{DS(on)}}" border="0" alt="I&lt;\frac{V_{CE(sat)}}{R_{DS(on)}}" /></a></p>
<p style="text-align: justify;">همان طور که مشخصه تا وقتی که جریان عبوری از نسبت ولتاژ اشباع به مقاومت کانال (همان مقاومت بین سورس و درین در زمان روشن بودن ترانزیستور) کمتر باشد، توان تلف شده در ترانزیستورهای ماسفت کمتر است. برای یک محاسبه سر انگشتی، ولتاژ اشباع معولا از حدود ۲۰۰ میلی‌ولت شروع می‌شوند تا چند ولت (این ولتاژ با جریان عبوری نسبت مستقیم دارد) به عنوان مثال در ترانزیستور محبوب 2N3055 برای جریان حدود ۱۰ آمپر ۱.۲ ولت است. مقاومت کانال در ترانزیستور‌های ماسفت‌ هم بسته به اندازه ترانزیستور و کیفت آن از ۱۰۰۰ میلی‌اهم تا چند میلی‌اهم متغیر است. به عنوان مثال ترانزیستور IRFZ46 مقاومت ۲۰ میلی‌اهمی در کانل خود دارد. در جریان ۱۰ آمپر توان تلف شده در ترانزیستور قطبی (۱۲ وات) نسبت به ترانزیستور ماسفت (۲ وات) ۶ برابر بزرگ‌تر است!</p>
<p style="text-align: justify;">
<h2 style="text-align: justify;">راه‌اندازی ترانزیستور ماسفت</h2>
<p style="text-align: justify;">گیت ماسفت بر خلاف بیس ترانزیستور قطبی، جریان نمی‌کشد.  به بیان دیگر گیت ماسفت یک خازن پارازیتی بزرگ (در حدود ۱۰-۱۰۰ نانو فاراد) است که باید تا ولتاژ آستانه شارژ شود. در نگاه اول این شکل درایو کردن خیلی عالی است چون جریانی از درایور کشیده نمی‌شود ولی دو نکته مهم در اینجا وجود دارد که کار را کمی مشکل می‌کند:</p>
<ol style="text-align: justify;">
<li>
<ol>
<li> ولتاژ گیت حداقل حدود ۱۰ ولت است و معمولا زیر این ولتاژ کانال به حداقل مقاومت خود نمی‌رسد.</li>
<li> گیت یک خازن بزرگ است. برای شارژ و دشارژ سریع این خازن (قطع و وصل سریع ترانزیستور) باید مدار‌هایی با قابلیت جریان‌دهی بالا داشته باشیم. مدار‌هایی که مقاومت شارژ کردن خازن گیت را کوچک کنند و بتوانند پیک جریان بزرگی را تحمل کنند (این موضوع در مجموع باعث می‌شود که سرعت ترانزیستور‌های ماسفت از انواع قطبی کمتر باشد).</li>
</ol>
</li>
</ol>
<p style="text-align: justify;">پس مدار‌هایی برای شارژ و دشارژ سریع خازن نیاز است به خصوص اگر بخواهیم درایور‌ موتور‌ در سرعت بالایی کار کند. انواع مختلفی از درایور‌های ماسفت وجود دارد. مدلی که من انتخاب کردم (در واقع در دسترس بود) چیپ SN75374 است. این تراشه می‌تواند تا ۴ ترانزیستور ماسفت را با حداکثر جریان پیک ۵۰۰ میلی آمپری درایو کند (قیمت این تراشه ۱۵۰۰ تومان در ۱۳۷۸). شکل این تراشه شبیه گیت‌های NAND با ۳ ورودی است. یکی از ورودی‌ها کنترل و دوتای دیگر پایه‌های enable هستند. از این پایه‌ها می‌توان برای درایورهای PWM و chopper استفاده کرد.</p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/sn75374.gif"><img class="size-medium wp-image-176 aligncenter" title="sn75374" src="http://abd.manidea.com/blog/wp-content/uploads/sn75374-300x152.gif" alt="" width="300" height="152" /></a></p>
<p style="text-align: justify;">نکته‌ی دیگر در این تراشه تغذیه‌های آن است. در مجوع این تراشه ۳ ولتاژ می‌خواهد. VCC1 که ۵ ولتی است. VCC2 و VCC3 که ولتاژ درایو گیت هستند که می‌توانند تا حداکثر ۲۵ ولت باشند. اگر بخواهید که محدوده ولتاژ خروجی حداکثر باشد باید ولتاژ VCC3 کمی بالاتر از ولتاژ VCC2 باشد. البته اگر حداکثر ولتاژ خروجی کافی باشد می‌توان این دو پایه را به هم متصل کرد (من در طراحی خودم همین کار را انجام داده‌ام و این دو پایه‌ را به ولتاژ ۱۲ ولت متصل کرده‌ام که احتمالا خروجی حداقل ۱۰ ولت خواهد بود).</p>
<h2 style="text-align: justify;">طراحی درایور</h2>
<p style="text-align: justify;">ممکن است موتور را بر اساس مشخصات مورد نظرتون تهیه کنید ولی شاید هم مثل من چندتا موتور دسته دوم قدیم داشته باشید که بدر این مورد باید به برچسب روی موتور دقت کنید (البته اگر بر چسبی وجود داشته باشد!). دو پارامتر مهم معمولا در این برچسب نوشته می‌شود، یکی جریان و دیگری ولتاژ کار موتور است. البته ولتاژ نامی خیلی مهم نیست چون به عنوان مثال در درایور‌های chopper این ولتاژ اصلا مطرح نیست بلکه اهمیت اصلی جریان عبوری از موتور است. جریان‌های بیشتر از مقدار ذکر شده ممکن است باعث گرم شدن بیش‌ از حد موتور و سوختن آن شود. جریان‌های کمتر نیز حداکثر گشتاور ممکن را تولید نمی‌کند. پس درایور باید به شکلی طراحی شود که جریان عبوری برابر جریان نامی موتور شود. در این درایورهای ساده دو گزینه وجود دارد، یکی ولتاژ تغذیه را جوری قرار دهیم که جریان عبوری برابر جریان مورد نظر شود به عنوان مثال از یک مبدل DC/DC استفاده کنیم. دوم استفاده از یک منبع با ولتاژ بالاتر و استفاده  از یک مقاومت برای کاهش ولتاژ است.  دقت کنید که در هر دو حالت باید مقاومت ترانزیستور را نیز در نظر بگیرم.</p>
<h3 style="text-align: justify;">محاسبات</h3>
<p style="text-align: justify;">خوب موتور من ۱.۲ آمپر و ۸.۵ ولتی است و به عبارت دیگر یک مقاومت 8.5/1.2=7.08 اهمی است. مقاومت Rds ترانزیستور (IRFS610) نیز  ۱.۵ اهم است (چرا این قدر مقاومت این آشغال-ماسفت زیاد است، داستانی دارد که بعدا خدمتتان عرض می‌کنم!). ولتاژ تغذیه هم ۱۲ ولت است (پاور کامپیوتر). حالا با این داده‌ها محاسبه‌ی مقاومت Rx (کاهش دهنده ولتاژ) خیلی ساده است.</p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/r_calc.gif"><img class="size-full wp-image-178 aligncenter" title="r_calc" src="http://abd.manidea.com/blog/wp-content/uploads/r_calc.gif" alt="" width="148" height="257" /></a></p>
<p style="text-align: justify;">در مسیر درایور سه مقامت به صورت سری وجود دارد. مقاومت معادل موتور، مقاومت کاهش‌دهنده ولتاژ و مقاومت ترانزیستور. مجموع این سه مقاومت از منبع ۱۲ ولتی ۱.۲ آمپر جریان می‌کشند. خوب در این حالت با یک KVL ساده مقدار مقاومت مجهول ۱.۴۲Ω به دست می‌آید. توانی که در این مقاومت تلف می‌شود نیز تقریباً برابر ۲ وات است. مقاومتی که در دسترس من بود چند عدد مقاومت ۲.۷Ω با توان ۲ وات بود. اگر دوتا از این مقاومت‌ها با هم موازی شوند یک مقاومت ۱.۳Ω با توان ۴ وات درست می‌کنند. ولی من چون می‌خواستم کمی موتورم را زجر دهم (!) سه عدد از این مقاومت‌ها را با هم موازی کردم که مقاومت به دست آمده ۰.۹Ω ‌شود.</p>
<h3 style="text-align: justify;">محافظت ترانزیستور از ولتاژ معکوس</h3>
<p style="text-align: justify;">اگر از فیزیک دبیرستان یاد داشته باشید، یک سلف در مقابل تغییرات جریان مقاومت می‌کند. این مقاومت هم به شکل یک ولتاژ معکوس در دو سر سلف ظاهر می‌شود. موتور پله‌ای نیز از سیم‌پیچ تشکیل شده است و برای چرخش  موتور این سیم‌پیچ‌ها را باید قطع و وصل کرد. با توجه به نکته گفته شده قطع جریان‌ِ سیم‌پیچ یک ولتاژ بزرگ در دو سر سیم‌پیچ ایجاد می‌کند. این ولتاژ معمولا می‌تواند خیلی بزرگ باشد (در حدود چند کیلو ولت! برای امتحان کردن می‌توانید مستقیم منبع ولتاژ را به یکی سیم‌های استپر متصل کنید. هنگام جدا کردن ولتاژ منبع، یک جرقه کاملا مشخص بین سیم‌ها خواهید دید!). ولتاژ بزرگ می‌تواند به ترانزیستور‌ها آسیب برساند به خصوص ترانزیستور‌های ماسفت که گفته می‌شود نسبت به over-voltage درین-سورس حساس هستند. برای از بین بردن این مشکل معمولا چندین روش وجود داره که سه روش ساده به این صورت است:</p>
<p style="text-align: justify;">
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/dump.gif"><img class="size-full wp-image-182 aligncenter" title="dump" src="http://abd.manidea.com/blog/wp-content/uploads/dump.gif" alt="" width="458" height="313" /></a></p>
<ol style="text-align: justify;">
<li>
<ol>
<li><strong>استفاده از یک دیود در حالت معکوس:</strong> این دیود در حالت معکوس بایاس شده ولی وقتی که ولتاژ معکوس القایی در دو سر سیم‌پیچ ایجاد می‌شود (این ولتاژ به مراتب بزرگ‌تر از ولتاژ تغذیه است) این دیود در حالت وصل قرار می‌گیرد و جریان معکوس را به سمت تغذیه هدایت می‌کند.</li>
</ol>
<ol>
<li><strong>استفاده از یک دیود به همراه مقاومت:</strong> مشکل روش قبلی این است که جریان معکوس مدت زمان زیادی طول می‌کشد تا از بین برود (میرایی کمی دارد). در این حالت با اضافه شدن یک مقاومت جریان معکوس با سرعت بیشتری میرا می‌شود. ولی مشکل اینجا است که جریان عبوری بر روی مقاومت یک افت پتانسیل ایجاد می‌کند. پس باید مقاومت را جوری انتخاب کرد که حداکثر افت پتانسیل ناشی از حداکثر جریان، کمتر از ولتاژ قابل تحمل برای ترانزیستور باشد. به عنوان مثال در ترانزیستورهایی که من استفاده می‌کنم حداکثر ولتاژ قابل تحمل ۲۰۰ ولت است. حداکثر جریان در مدار هم حدود ۲ آمپر خواهد بود. ولتاژ معکوس دیود‌ها هم حدود نیم ولت (که البته مهم نیست)  است. حالا من باید مقاومت را طوری محاسبه کنم که مجموع ولتاژهای تغذیه، افت‌ پتانسیل روی مقاومت و ولتاژ دیود زیر ۲۰۰ ولت شود.
<p style="text-align: right;"><img class="alignnone" src="http://www.codecogs.com/gif.latex?\begin{align*}&amp;space;V_{DS(max)}&amp;space;\leq&amp;space;V_{R}&amp;space;+&amp;space;Vdd&amp;space;+&amp;space;V_{Diode}\\&amp;space;\frac{V_{DS(max)}&amp;space;-&amp;space;Vdd&amp;space;-&amp;space;V_{Diode}}{I_{max}}&amp;space;\leq&amp;space;R\\&amp;space;\end{align*}" border="0" alt="\begin{align*}&lt;br /&gt; V_{DS(max)} \leq V_{R} + Vdd + V_{Diode}\\&lt;br /&gt; \frac{V_{DS(max)} - Vdd - V_{Diode}}{I_{max}} \leq R\\&lt;br /&gt; \end{align*}" /><br />
با این محاسبات حداکثر اندازه مقاومت در مدار من حدود ۱۰۰ اهم می‌شود (نمیدانم چرا این مقاومت را در مدار ۵۰ (دو مقاومت ۱۰۰ اهمی موازی) در نظر گرفته‌ام!)</li>
<li>
<p style="text-align: right;"><strong>استفاده از دیود به همراه زنر: </strong>این روش از دو روش قبلی سریع‌تر است و همچنین حداکثر ولتاژ از قبل مشخص هست (که برابر ولتاژ دیود زنر به همراه ولتاژ دیود است).</p>
</li>
</ol>
</li>
</ol>
<p style="text-align: justify;">در هر سه روش بالا دیود‌ها باید از نوع سریع شاتکی باشند تا بتوانند به سرعت قطع و وصل شوند (به عنوان مثال 1N5819). من در یک تجربه در ابتدا دیود‌های معمولی سری 1N4001 استفاده کرده بودم. در آن مدار حداکثر سرعت به 60RPM می‌رسید. بعدا مدار را با دیود‌های شاتکی به همراه مقاومت بستم (البته در آن مدار یک خازن هم موازی با مقاومت قرار داده بودم) که در این مدار جدید سرعت به حدود 100RPM رسید!</p>
<p style="text-align: justify;">
<h2 style="text-align: justify;">مدار درایور</h2>
<h3 style="text-align: justify;">شماتیک</h3>
<p style="text-align: justify;">شماتیک این مدار رو بر اساس ترانزیستور IRFS610 (در واقع می‌شه گفت که فروشنده این آشغال ماسفت رو به من انداخت!)، راه‌انداز SN75374، موتور ۸.۵ولت/۱.۲آمپری و تغذیه ۱۲ ولت طراحی کردم. شکل زیر شماتیک این درایور است (رنگ‌های عکس زیر دقیقا مثل محیط خود برنامه gschem که شماتیک را در آن رسم کرده‌ام).</p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/smpd.png"><img class="size-thumbnail wp-image-183 aligncenter" title="smpd" src="http://abd.manidea.com/blog/wp-content/uploads/smpd-150x150.png" alt="" width="150" height="150" /></a></p>
<h3 style="text-align: justify;">بورد</h3>
<p style="text-align: justify;">در طراحی بورد اولا باید دقت کرد که خط‌هایی که از آنها جریان عبور می‌کند، تا حد امکان پهن باشند، زمین هم به همین صورت باید بزرگ باشد (که البته به خوبی در مدار من رعایت نشده که یکی از دلایل آن تک لایه بودن بورد است). ثانیا اگر شما برای ترانزیستور‌ها و یا قطعات دیگر می‌خواهید خنک کننده در نظر بگیرید باید ابعاد آن را نیز در نظر داشته باشید چون ممکن است، بعد از طراحی بورد متوجه شوید که جایی برای خنک کننده ندارید و یا خنک کننده به قطعات دیگر و یا به بورد‌های کناری برخورد می‌کند.</p>
<p style="text-align: justify;"><strong>نکته: </strong><em>شما اگر از این مدار می‌خواهید استفاده کنید حتماً ترانزیستور‌های بهتری تهیه کنید. اکثر این ترانزیستور‌ها از نظر پین با هم مطابقت دارند (pin compatible) و شما مشکلی در استفاده از بورد نیز نخواهید داشت. </em></p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/smpd1.png"><img class="size-medium wp-image-184 aligncenter" title="smpd1" src="http://abd.manidea.com/blog/wp-content/uploads/smpd1-300x146.png" alt="" width="300" height="146" /></a></p>
<p style="text-align: justify;">من در این مدار ۴ سری کانکتور قرار دادم. سری اول ترمینال ۵ پین‌ (که پیچ دارند و سیم در داخل آنها با پیچ‌گوشتی محکم می‌شود) که ۵ سیم موتور به آن وصل می‌شود. سری دوم ترمینال ۲ پین برای ولتاژ تغذیه موتور. سومین سری ترمینال ۸ پین برای اتصال تغذیه مدار، درایور ماسفت و ۴ سیم کنترل موتور. چهارمین کانکتور هم از نوع IDC است (۱۰ پین 2&#215;5) که همان ۴ سیم کنترل موتور را حمل می‌کند. این کانکتور کمک می‌کند سیم‌کشی کمتر  و راحتتر شود و بتوان با یک کابل ریبون، کنترلر را به این مدار متصل کرد.</p>
<p style="text-align: justify;">
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/pboard1.jpg"><img class="size-medium wp-image-186 aligncenter" title="pboard1" src="http://abd.manidea.com/blog/wp-content/uploads/pboard1-300x148.jpg" alt="" width="300" height="148" /></a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">بعد از ساخت و لحیم کردن بورد بالا، در اولین تست به نظرم ترانزیستور‌های خیلی داغ می‌شدند (البته این امر به علت Rds بالای این ترانزیستور‌ها امری بدیهی بود). احساس کردم حتما نیاز هست که یک خنک کننده (Heat Sink) به ترانزیستور‌ها متصل کنم.  البته خنک‌کننده‌ای در دسترس من نبود! ایده‌ای که به ذهنم رسید استفاده از یک تکه آلومنیوم به عنوان خنک‌کننده است. ساده‌ترین و بزرگ‌ترین آلومنیوم در دسترس چوب پرده است. خوب ما هم در خانه یک تکه از این چوب پرده‌ها داشتیم. سریع یه اندازه‌گیری بعد بریدن با اره و سپس هم سوراخ‌کاری. حالا دیگر من یک خنک‌کننده ارزان قیمت دارم!</p>
<p style="text-align: justify;">
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/pb-heatsink1.jpg"><img class="size-medium wp-image-187 aligncenter" title="pb-heatsink1" src="http://abd.manidea.com/blog/wp-content/uploads/pb-heatsink1-300x122.jpg" alt="" width="300" height="122" /></a></p>
<p style="text-align: justify;">بورد این مدار با <a href="http://www.geda.seul.org">gEDA</a> و <a href="http://pcb.sourceforge.net/">PCB</a> طراحی شده است. دو مدار داخل متن، <a href="http://abd.manidea.com/blog/wp-content/uploads/dump.gif">اینجا</a> و <a href="http://abd.manidea.com/blog/wp-content/uploads/r_calc.gif">اینجا</a> با برنامه <a href="http://opencircuitdesign.com/xcircuit/">xcircuit</a> کشیده شده‌اند. این تصویر هم در <a href="http://abd.manidea.com/blog/wp-content/uploads/unipolar.png">اینجا</a> با برنامه <a href="http://www.gnome.org/projects/dia/">Dia</a> کشیده شده است (قبل از اینکه برنامه خوب xcircuit را پیدا کنم!).</p>
<p style="text-align: justify;">(<a href="http://abd.manidea.com/projects/cnc/smpd_sch.pdf">+</a>) فایل شماتیک مدار به فرمت پی‌دی‌اف.</p>
<p style="text-align: justify;">(<a href="http://abd.manidea.com/projects/cnc/smpd_pcb.pdf">+</a>) فایل بورد مدار به فرمت پی‌دی‌اف.</p>
<p style="text-align: justify;">(<a href="http://abd.manidea.com/projects/cnc/smpd.tar.bz2">+</a>) فایل فشرده به فرمت tar.bz2 حاوی فایل‌های شماتیک و بورد و همچنین پی‌دی‌اف‌های تولید شده.</p>
]]></content:encoded>
			<wfw:commentRss>http://abd.manidea.com/blog/archives/170/feed</wfw:commentRss>
		</item>
		<item>
		<title>تعداد سیم‌های استپر موتور!</title>
		<link>http://abd.manidea.com/blog/archives/139</link>
		<comments>http://abd.manidea.com/blog/archives/139#comments</comments>
		<pubDate>Tue, 12 Aug 2008 19:57:21 +0000</pubDate>
		<dc:creator>عبد</dc:creator>
		
		<category><![CDATA[الکترونیک]]></category>

		<category><![CDATA[H-Bridge]]></category>

		<category><![CDATA[تک‌قطبی]]></category>

		<category><![CDATA[درایور]]></category>

		<category><![CDATA[دوقطبی]]></category>

		<category><![CDATA[موتور پله‌ای]]></category>

		<guid isPermaLink="false">http://abd.manidea.com/blog/?p=139</guid>
		<description><![CDATA[در ابتدای آشنایی با موتور‌های پله‌ای، تنوع تعداد سیم‌های این موجود در مدل‌های مختلف، من رو حسابی گیج می‌کرد! ولی خوب یه توضیح کوچک شاید بتونه کمک کنه&#8230;

سیم‌پیچی‌های مختلف موتور‌های پله‌ای
موتور‌های پله‌ای چندین نوع سیم‌بندی دارند. این تنوع ممکن است باعث سردرگمی در نحوه راه‌اندازی و اتصال سیم‌های موتور شود. من در اینجا توضیح خیلی [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">در ابتدای آشنایی با موتور‌های پله‌ای، تنوع تعداد سیم‌های این موجود در مدل‌های مختلف، من رو حسابی گیج می‌کرد! ولی خوب یه توضیح کوچک شاید بتونه کمک کنه&#8230;</p>
<p><span id="more-139"></span></p>
<h2 style="text-align: justify;">سیم‌پیچی‌های مختلف موتور‌های پله‌ای</h2>
<p style="text-align: justify;">موتور‌های پله‌ای چندین نوع سیم‌بندی دارند. این تنوع ممکن است باعث سردرگمی در نحوه راه‌اندازی و اتصال سیم‌های موتور شود. من در اینجا توضیح خیلی کوتاهی درباره سیم‌بندی‌های مختلف موتور پله‌ای می‌دهم که کمک کنه سیم‌های یک موتور پله‌ای را تشخیص بدهیم.</p>
<p style="text-align: justify;"><strong>نکته:</strong> نوشته‌های این پست برای موتور‌های پله‌ای با ۴ فاز است (یعنی دارای ۴ سیم پیچ). موتور‌هایی با ۵ فاز و یا بیشتر نیز وجود دارد که شرایط متفاوتی دارند.</p>
<p style="text-align: justify;">استپر موتور‌های ۴ فاز ممکن است ۴، ۵، ۶ و یا ۸ سیم داشته باشند! هر کدام از این حالت‌ها با دیگری متفاوت است و نوع خاصی  از سیم کشی و درایور را می‌طلبد.</p>
<p style="text-align: justify;">
<table style="text-align: justify; height: 846px;" border="0" width="467">
<tbody>
<tr>
<td><a href="http://abd.manidea.com/blog/wp-content/uploads/stepper4.png"><img class="size-full wp-image-150 alignleft" title="stepper4" src="http://abd.manidea.com/blog/wp-content/uploads/stepper4.png" alt="" width="193" height="208" /></a></td>
<td><strong>نوع: </strong>سیم‌پیچی دوقطبی<strong>ت</strong><strong>عداد سیم‌ها: </strong>۴<strong></strong><strong></strong></p>
<p><strong>درایور‌(ها):</strong> دوقطبی</td>
</tr>
<tr>
<td><a href="http://abd.manidea.com/blog/wp-content/uploads/stepper5.png"><img class="size-full wp-image-151 alignleft" title="stepper5" src="http://abd.manidea.com/blog/wp-content/uploads/stepper5.png" alt="" width="205" height="208" /></a></td>
<td><strong>نوع: </strong>سیم‌پیچی تک‌قطبی<strong></strong><strong>ت</strong><strong>عداد سیم‌ها:</strong>۵<strong></strong><strong></strong></p>
<p><strong>درایور‌(ها):</strong> تک‌قطبی</td>
</tr>
<tr>
<td><a href="http://abd.manidea.com/blog/wp-content/uploads/stepper6.png"><img class="size-full wp-image-152 alignleft" title="stepper6" src="http://abd.manidea.com/blog/wp-content/uploads/stepper6.png" alt="" width="205" height="208" /></a></td>
<td><strong>نوع: </strong>سیم‌پیچی تک‌قطبی/دوقطبی<strong></strong><strong></strong><strong>ت</strong><strong>عداد سیم‌ها: </strong>۶<strong></strong><strong></strong></p>
<p><strong>درایور‌(ها):</strong> تک‌قطبی/دوقطبی. در حالت تک قطبی دو پایه مشترک باید به هم متصل شوند. در حالت دو قطبی دو پایه مشترک آزاد هستند.</td>
</tr>
<tr>
<td><a href="http://abd.manidea.com/blog/wp-content/uploads/stepper8png"><img class="size-full wp-image-153 alignleft" title="stepper8" src="http://abd.manidea.com/blog/wp-content/uploads/stepper8.png" alt="" width="181" height="196" /></a></td>
<td><strong>نوع: </strong>سیم‌پیچی ۸ سر<strong>ت</strong><strong>عداد سیم‌ها: </strong>۸</p>
<p style="text-align: justify;"><strong>درایور‌(ها):</strong> تک‌قطبی/ دوقطبی. در حالت تک قطبی باید دو پایه از دو سیم‌پیچ به هم متصل شوند سپس این دوپایه دوباره به هم اتصال پیدا کننده که پایه مشترک درست شود. حالت دوقطبی دو شکل متفاوت دارد، اتصال دو سیم‌پیچ به هم به صورت موازی و سری که هر کدام خواص خود را دارند.</p>
</td>
</tr>
</tbody>
</table>
<h2 style="text-align: justify;">درایور تک‌قطبی/درایور دوقطبی</h2>
<p style="text-align: justify;">خوب همان طوری که در قسمت قبل گفتم شما ابتدا باید تعداد سیم‌های موتور را بررسی کنید و سپس بر اساس آن بین درایور تک‌قطبی و یا دوقطبی انتخاب کنید. در ادامه ویژگی‌های این دو درایور بررسی می‌شوند. دقت کنید در اینجا درباره جزئیات درایور‌ها بحثی نشده است. علاوه بر این درایور‌ها با ولتاژ ثابت در نظر گرفته‌ شده‌اند (بر خلاف درایور‌های پیشرفته‌تر chopper که در آنها ولتاژ تغییر می‌کند).</p>
<p style="text-align: justify;">
<h3 style="text-align: justify;">درایور تک‌قطبی</h3>
<p style="text-align: justify;">این درایور از این جهت تک‌قطبی نام‌ دارد چون جریان در هر کدام از پایه‌ها فقط در یک جهت حرکت می‌کند. به همین دلیل می‌توان هر کدام از شاخه‌های موتور را با یک ترانزیستور (سوئیچ) به تنهایی کنترل کرد. شکل زیر دیاگرام این درایور‌ را نشان می‌دهد. دقت کنید که سوئیچ‌های در نظر گرفته شده در شکل، با توجه به پیاده‌‌سازی ممکن است ترانزیستور BJT، ترانزیستور Power MOSFET و یا حتی رله باشد!</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-158" title="unipolar" src="http://abd.manidea.com/blog/wp-content/uploads/unipolar.png" alt="" width="326" height="244" /></p>
<p style="text-align: justify;">در این نوع درایور کافی است در هر استپ یکی از ۴ پایه به ترتیب فعال شود. جهت حرکت نیز با توجه ترتیب روشن و خاموش شدن سوئیچ‌ها مشخص می‌شود.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">
<h3 style="text-align: justify;">درایور دو قطبی</h3>
<p style="text-align: justify;">در این درایور جریان در دو جهت جاری می‌شود، به همین دلیل ما نیاز به <a href="http://en.wikipedia.org/wiki/H-bridge">H-Bridge</a> داریم. در این حالت باید دو سوئیچ برای هر پایه قرار دهیم که بتواند پایه را یا به VCC و یا به GND متصل کنند. شکل زیر مدل ساده شده یک درایور دوقطبی را نشان می‌دهد. فقط باید دقت کرد که سوئیچ‌ها در اینجا معمولا عکس یک‌ دیگر هستند، وقتی سوئیچ شاخه بالایی متصل است سوئیچ شاخه پایینی خاموش است (مثلا ترانزیستور مثبت و منفی و یا یک گیت not  بر روی کنترل یکی از سوئیچ‌ها) .</p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/bipolar.png"><img class="aligncenter size-full wp-image-160" title="bipolar" src="http://abd.manidea.com/blog/wp-content/uploads/bipolar.png" alt="" width="350" height="307" /></a></p>
<p>خوب استپرموتورهای من هم ۵ سیم دارند. طبق لیست بالا من فقط می‌توانم از درایور تک‌قطبی استفاده کنم (معمولا درایور‌های دوقطبی سرعت بیشتری دارند). خوب من‌ هم همین کار رو کردم! جزئیات در پست بعدی انشالله!</p>
]]></content:encoded>
			<wfw:commentRss>http://abd.manidea.com/blog/archives/139/feed</wfw:commentRss>
		</item>
		<item>
		<title>درایور موتور پله‌ای برای CNC (قسمت اول)</title>
		<link>http://abd.manidea.com/blog/archives/113</link>
		<comments>http://abd.manidea.com/blog/archives/113#comments</comments>
		<pubDate>Sun, 10 Aug 2008 22:52:12 +0000</pubDate>
		<dc:creator>عبد</dc:creator>
		
		<category><![CDATA[CNC]]></category>

		<category><![CDATA[الکترونیک]]></category>

		<category><![CDATA[linuxCNC]]></category>

		<category><![CDATA[موتور پله‌ای]]></category>

		<category><![CDATA[پورت موازی]]></category>

		<guid isPermaLink="false">http://abd.manidea.com/blog/?p=113</guid>
		<description><![CDATA[بلاخره بعد از یک تلاش ناموفق، درایور دستگاه CNC رو ساختم و یه تست کوچیک با موتور استپر زدم.

مقدمه
این درایور برای کنترل حداکثر ۴ موتور پله‌ای از طریق پورت موازی کامپیوتر طراحی شده است. برنامه‌ای که CNC را کنترل می‌کند EMC یا Enhanced Machine Controller است. سایت رسمی این برنامه‌ی فوق العاده www.linuxcnc.org است که [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">بلاخره بعد از یک تلاش ناموفق، درایور دستگاه CNC رو ساختم و یه تست کوچیک با موتور استپر زدم.</p>
<p><span id="more-113"></span></p>
<h2 style="text-align: justify;">مقدمه</h2>
<p style="text-align: justify;">این درایور برای کنترل حداکثر ۴ موتور پله‌ای از طریق پورت موازی کامپیوتر طراحی شده است. برنامه‌ای که CNC را کنترل می‌کند EMC یا Enhanced Machine Controller است. سایت رسمی این برنامه‌ی فوق العاده <a href="http://www.linuxcnc.org">www.linuxcnc.org</a> است که برنامه و راهنما‌های آن را می‌توانید از آن دریافت کنید (انشالله در پست جداگانه‌ای درباره ویژگی‌های بارز این برنامه و همچنین طریقه راه‌اندازی آن، توضیحاتی در حد سواد اندکم می‌نویستم).</p>
<p style="text-align: justify;">این درایور سیگنال‌های پله و جهت (step و direction) را برای هر موتور تبدیل به چهار سیگنال برای ارسال به پایه‌های موتور می‌کند. موتوری که در دسترس من قرار دارد از نوع تک قطبی است به همین علت قسمت توان درایور به صورت تک قطبی طراحی شده است.</p>
<p style="text-align: justify;">شکل‌های زیر دیاگرام کلی این کنترلر را نشان می‌دهند:</p>
<table style="height: 244px; text-align: justify;" border="0" width="311">
<tbody>
<tr>
<td><a href="http://abd.manidea.com/blog/wp-content/uploads/cnc-controller1.jpg"></a></p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/cnc-controller1.jpg"><img class="aligncenter size-medium wp-image-118" title="cnc-controller1" src="http://abd.manidea.com/blog/wp-content/uploads/cnc-controller1-300x286.jpg" alt="" width="210" height="200" /></a></p>
</td>
<td><a href="http://abd.manidea.com/blog/wp-content/uploads/diagram1.png"></a></p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/diagram1.png"><img class="aligncenter size-medium wp-image-116" title="diagram1" src="http://abd.manidea.com/blog/wp-content/uploads/diagram1-300x101.png" alt="" width="240" height="81" /></a></p>
</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">در مجموع این کنترلر ۳ بورد دارد. مبدل DB25-IDC34، قسمت مرکزی و قسمت توان است.</p>
<ul style="text-align: justify;">
<li>مبدل کانکتور DB25 به IDC34 برای اتصال بورد به پورت پارالل (DB25-IDC34 Adaptor ).</li>
<li>قسمت مرکزی (main controller) که سیگنال‌های دریافتی از پورت را به صورت مناسب برای موتور‌های پله‌ای در می‌آورد.</li>
<li>کنترلر توان (Power Controller) برا تأمین جریان مورد نیاز موتور‌ها.</li>
</ul>
<h3 style="text-align: justify;">مبدل DB25 به IDC34</h3>
<p style="text-align: justify;">این مدار چیزی خاصی نداره نمی‌دونم چرا اصلا دارم درباره‌اش می‌نویسم ولی ممکن است برای کسی جالب باشد و بخواهد از این ایده در جای دیگری هم استفاده کند. حداقل امیدوارم این طور باشد.</p>
<p style="text-align: justify;">همان طور که می‌دانید، کانکتور پورت پارالل پشت مادربورد DB25 مادگی (Female DB25) است به این شکل:</p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/lpt_port.jpg"><img class="alignnone size-full wp-image-122" title="lpt_port" src="http://abd.manidea.com/blog/wp-content/uploads/lpt_port.jpg" alt="" /></a><a href="http://en.wikipedia.org/wiki/Parallel_port"><img class="size-full wp-image-123 aligncenter" title="lpt" src="http://abd.manidea.com/blog/wp-content/uploads/lpt.jpg" alt="" width="180" height="135" /></a></p>
<p style="text-align: justify;">شما برای اتصال مدارتان به کامپیوتر باید یک کانکتور DB25 نری (Male DB25) تهیه کنید و کلی سیم بهش لحیم کنید. این روش به نظرم پر زحمت است و برای منِ تنبل خیلی مناسب نیست. به همین دلیل من یه بورد ساده درست کردم که کانکتور DB25 نری را به یک کانکتور IDC34 تبدیل می‌کنه* (DB25 to IDC Connector). خوبی این کانکتور‌های IDC این است که می‌توانند بدون هیچ زحمتی به کابل فلت یا کابل ریبون (<a href="http://en.wikipedia.org/wiki/Ribbon_cables">ribbon cable</a>) متصل شوند. حالا چرای ۳۴ پین؟ خوب در واقع از ۲۵ پین DB25 فقط ۱۷ پین دیتا است و ۸ پین دیگر زمین است پس فقط ۱۸ عدد سیم نیاز است پس چرا ۳۴ پین در این مبدل به کار رفته است. خوب دو دلیل برای این کار وجود دارد. دلیل اول کم کردن امپدانس سیم زمین با افزایش تعداد سیم‌های آن است. دلیل دیگر نیز کم کردن احتمال هم‌شنوایی  (<a href="http://en.wikipedia.org/wiki/Crosstalk">crosstalk</a>) است. همشنوایی به بیان خیلی ساده به این معنی است که د<em>و یا چند سیم حامل سیگنال که از کنار هم عبور می‌کنند ممکن است به صورت ناخواسته بر رو هم تاثیر بگذارند</em>. یک از روش‌های کاهش این موضوع قرار دادن سیگنال زمین بین هر دو جفت سیم است. در این مبدل نیز ۱۷ سیم به زمین متصل است که باعث می‌شود بین هر دو سیم یک سیم زمین قرار بگیرد. در واقع فقط نیمی از ۳۴ پین حاوی دیتا هستند.</p>
<p style="text-align: justify;">شکل زیر دو روی بورد این مبدل را نشان می‌دهد.</p>
<p style="text-align: center;"><img class="size-full wp-image-126 aligncenter" title="db25-idc34-11" src="http://abd.manidea.com/blog/wp-content/uploads/db25-idc34-11.jpg" alt="" width="367" height="182" /></p>
<p style="text-align: justify;">همان طور که در شکل نیز مشخص است، برای اینکه بورد به صورت مسطح دربیاید و سوراخ‌کاری زیاد هم نخواهد (چون بورد‌ها را در خانه درست می‌کنم و سوراخ‌کاری برای من از بزرگترین دردسر‌های است)، هر دو کانکتور DB25 و IDC34 را به صورت رایت بر دو سمت بورد لحیم کرده‌ام (درست کردن footprint برای این قطعات در PCB دردسر خاص خودش را دارد چون بعضی از پد‌ها بر روی بورد و بعضی دیگر در زیر بورد قرار دارند). با اینکه درست کردن این برد یکم کار می‌بره ولی خوب بعد از آن شما یک کابل خیلی خوب و راحت خواهید داشت:</p>
<p style="text-align: center;"><a href="http://abd.manidea.com/blog/wp-content/uploads/db25idc34cable1.jpg"><img class="size-medium wp-image-128 aligncenter" title="db25idc34cable1" src="http://abd.manidea.com/blog/wp-content/uploads/db25idc34cable1-300x231.jpg" alt="" width="300" height="231" /></a></p>
<p style="text-align: justify;">دو قسمت دیگر انشالله در پست‌های بعدی&#8230;</p>
<p style="text-align: justify;">بورد این مبدل با برنامه gEDA طراحی و ساخته شده است.</p>
<p style="text-align: justify;"><a href="http://abd.manidea.com/projects/cnc/db25idc34_sch.pdf">(+)</a> فایل شماتیک به فرمت پی‌دی‌اف.</p>
<p style="text-align: justify;"><a href="http://abd.manidea.com/projects/cnc/db25idc34_pcb.pdf">(+)</a> فایل بورد مدار چاپی به فرمت پی‌دی‌اف.</p>
<p style="text-align: justify;"><a href="http://abd.manidea.com/projects/cnc/db25-idc34-adaptor.tar.bz2">(+)</a> فایل فشرده به فرمت tar.bz2 حاوی فایل‌های شماتیک و بورد و همچنین پی‌دی‌اف‌های تولید‌شده.</p>
<p style="text-align: justify;">* در بازار کانکتور‌های وجود دارد که از یک طرف به صورت DSUB هستند و از طرف دیگر کابل ریبون به آنها متصل می‌شود. می‌توان به راحتی از این کانکتور‌ها نیز استفاده نمو‌د.</p>
<p style="text-align: center;"><a href="http://www.catskillsupply.com/dsubshellsdb25.html"><img class="aligncenter size-medium wp-image-130" title="11250" src="http://abd.manidea.com/blog/wp-content/uploads/11250.jpg" alt="" width="200" height="118" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://abd.manidea.com/blog/archives/113/feed</wfw:commentRss>
		</item>
		<item>
		<title>مقدمه‌ای خیلی کوتاه برای ساخت کنترلر CNC غیر حرفه‌ای</title>
		<link>http://abd.manidea.com/blog/archives/98</link>
		<comments>http://abd.manidea.com/blog/archives/98#comments</comments>
		<pubDate>Thu, 07 Aug 2008 08:43:55 +0000</pubDate>
		<dc:creator>عبد</dc:creator>
		
		<category><![CDATA[CNC]]></category>

		<category><![CDATA[الکترونیک]]></category>

		<category><![CDATA[موتور پله‌ای]]></category>

		<guid isPermaLink="false">http://abd.manidea.com/blog/?p=98</guid>
		<description><![CDATA[موتورهای پله‌ای (stepper motor) به  علت سادگی کاربرد‌های فراوانی دارند. یکی از این کاربرد‌های ساخت دستگاه CNC است (به خصوص دستگا‌های CNC که ساده هستند و توسط اشخاص علاقه‌مند درست شده‌اند).
کنترلر موتور‌های پله‌ای معمولا ساختار ساده‌ای دارند و به راحتی می‌توان با آنها موقعیت را کنترل کرد (Position Control) به همین علت یکی از روش‌های [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">موتورهای پله‌ای (<a href="http://en.wikipedia.org/wiki/Stepper_motor">stepper motor</a>) به  علت سادگی کاربرد‌های فراوانی دارند. یکی از این کاربرد‌های ساخت دستگاه CNC است (به خصوص دستگا‌های CNC که ساده هستند و توسط اشخاص علاقه‌مند درست شده‌اند).</p>
<p style="text-align: justify;"><span id="more-98"></span>کنترلر موتور‌های پله‌ای معمولا ساختار ساده‌ای دارند و به راحتی می‌توان با آنها موقعیت را کنترل کرد (Position Control) به همین علت یکی از روش‌های محبوب برای استفاده در دستگاه‌های CNC به حساب می‌آیند. به خصوص دستگاه‌های CNC که توسط اشخاص علاقه‌مند (hobbyist) درست می‌شوند. در این پست یه مقدمه خیل کوتاه درباره دستگاه CNC می‌نویسم در حد سواد خیلی اندکم که انشاالله در پست‌های بعدی درباره مدار کنترلر توضیحاتی بنویسم.</p>
<p style="text-align: justify;">به عنوان یک توضیح خیلی مختصردستگاه <a href="http://en.wikipedia.org/wiki/CNC">CNC</a> یا <a href="http://fa.wikipedia.org/wiki/%D8%B3%DB%8C%E2%80%8C%D8%A7%D9%86%E2%80%8C%D8%B3%DB%8C">دستگاه کنترل رقمی رایانه‌ای</a> (Numerical Control Machine) یک ابزار صنعتی  است که توسط کامپیوتر کنترل می‌شود و می‌تواند برای ساخت  طیف مختلفی از قطعات استفاده شود.</p>
<p style="text-align: justify;"><a href="http://en.wikipedia.org/wiki/CNC"><img class="size-full wp-image-101 aligncenter" title="cnc-wikipedia" src="http://abd.manidea.com/blog/wp-content/uploads/cnc-wikipedia.jpg" alt="" width="180" height="192" /></a></p>
<p style="text-align: justify;">عکس بالا یک نمونه از CNCهایی است به آن اشاره کردم. قسمت الکترونیکی/الکتریکی این مدل CNC در واقع درایو کردن سه موتور پله‌ای است.</p>
<p style="text-align: justify;">دستگاه CNC به نسبت پیچیده‌است ولی به این معنی نیست که شما نمی‌توانید برای خودتان در خانه یک دستگاه CNC درست کنید. اگر یک جستوجو در گوگل انجام دهید هزاران نفر را پیدا می‌کنید که برای خودشان یک CNC درست کرده‌اند (البته نه یک دستگاه مثل دستگاهی که در بالا قرار دارد چون دستگاه مذکور حداقل چند صد میلیون قیمت دارد علاوه بر این از نظر اندازه هم به نسبت برای خونه بزرگه!). عکس زیر یک نمونه از این دستگاه‌ها را نشان می‌دهد.</p>
<p style="text-align: justify;"><a href="http://www.techimoto.com/2008/04/12/build-your-own-cnc-machine/"><img class="size-medium wp-image-102 aligncenter" title="sample-hobby-cnc" src="http://abd.manidea.com/blog/wp-content/uploads/sample-hobby-cnc-300x243.jpg" alt="یک دستگاه CNC دست‌ساز" width="300" height="243" /></a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">یک دستگاه CNC معمولا حداقل سه محور X Y Z دارد که به کمک آن می‌تواند نوک ابزار را در هر نقطه از فضای سه بعدی (مشخصا محدود به محدوده عملکرد دستگاه) قرار دهد. حالا این ابزار ممکن است یک مته برای سوراخ‌کاری، یا یک فرز انگشتی برای کنده‌کاری و یا حتی یک بازوی ظریف برای قرار دادن قطعات <a href="http://en.wikipedia.org/wiki/Surface-mount_technology">SMD</a> بر روی سطح بورد باشد. برای این ابزار ممکن هر کسی با توجه به نیاز‌های خود صد‌ها کاربرد پیدا کند، به همین دلیل مطمئن باشید ابزار کاملا کاربردی خواهد بود. دوباره بر می‌گردیم سراغ محور‌ها، هر کدام از این محور‌های شامل یک موتور، یک مکانیزم برای تبدیل حرکت گردشی موتور به حرکت افقی و یک راهنما برای حرکت خطی (<a href="http://en.wikipedia.org/wiki/Linear_guide">Linear Guide</a>)  . در ساده‌ترین حالت می‌توان از یک میل‌پیچ به همراه مهره برای تبدیل چرخش موتور به حرکت خطی استفاده کرد ولی اگر دستگاه شما جدی‌تر باشه می‌توانید سر کیسه رو شل کنید و از بال اسکرو (<a href="http://en.wikipedia.org/wiki/Ball_screw">Ball Screw</a>) استفاده کنید. راهنمای حرکت به نظرم از پیچیده‌ترین قسمت‌های است به نوعی که خیلی از علاقه‌مندان روش‌های ابتکاری برای درست کردن این راهنما انجام داده‌اند. یک نمونه از این ایده‌ها استفاده از ریل‌های کابینت است.</p>
<p style="text-align: justify;">قسمت مورد نظر ما استپر موتور است. همان طور که  گفته شد یک دستگاه CNC ساده سه موتور پله‌ای دارد که کنترلر ما باید این سه موتور را به صورت همزمان کنترل کند. هر موتور در حالت ساده تک قطبی  ۵ سیم دارد. که یکی مشترک است و ۴ سیم دیگر  به ترتیب به سیم‌پیچ‌های موتور متصل شده‌اند. برای به گردش درآوردن استپر باید یکی از این ۴ پایه را در هر مرحله فعال کنیم. جهت حرکت نیز بر اساس جهت فعال کردن این پایه‌ها مشخص می‌شود. پس به نظر می‌رسد که هر استپر به ۴ پایه دیجیتال برای کنترل نیازمند باشد. پس برای دستگاه CNC حداقل به ۱۲ پایه نیاز‌مندیم. به فرض اگر بخواهیم از پورت پارالل استفاده کنیم، ممکن است تعداد IO کم‌ بیاوریم. ولی خوب یک راه حل برای تعداد پایه‌ها وجود داره اون هم استفاده از دو پایه step و direction است (این ایده به نوعی متفاوت در انکودر‌های نوری نیز استفاده می‌شود). هر لبه بالارونده (یا پایین‌رونده) در پایه step در واقع به معنی یک پله چرخش در موتور پله‌ای است. جهت حرکت هم از روی پایه‌ جهت یا direction مشخص می‌شود. دی این حالت یک مدار ساده نیاز داریم که این سیگنال‌های این دو پایه را برای استپر موتور ترجمه کند و به فرم چهار سیمی دربیاورد. این نوشته مقدمه‌ای ناقص و مختصر بود برای پست بعدی که انشاالله در مورد مدار کنترلی است که برای دستگاه CNC درست کرده‌ام (من و برادرم در حال ساخت یک CNC ساده هستیم که امید‌واریم اگر بشه جزئیات ساختش رو اینجا قرار بدیم).</p>
<p style="text-align: justify;">همان طور که گفتم جزئیات ساخت دستگاه CNC حتی یک مدل ساده به نسبت زیاد است و شامل قسمت‌های مکانیکی، الکترونیکی و نرم‌افزاری است. دوستان علاقه‌مند با یک جستجوی کوتاه در گوگل صدها مطلب مفید در این زمینه پیدا خواهند کرد.</p>
<p style="text-align: justify;"><a href="http://www.cnckaran.com">یک سایت فارسی خوب به عنوان مرجعی برای CNC</a> (<span style="font-size: x-small; font-family: Tahoma;"><span lang="fa"> از منش مدیران این سایت خیلی خوشم آمده در صفحه اول نوشته:<span style="font-size: x-small; font-family: Tahoma;"><span style="text-decoration: underline;"><em><span lang="fa">مدیریت سایت </span><span lang="fa"> محدودیتی برای کپی اطلاعات از سایت </span></em>CNCkaran.com</span><span lang="fa"><span style="text-decoration: underline;"><em> قائل نمی باشد</em></span> این منش باید مورد توجه امثال من باشه که خیلی وقت‌ها نگران کپی شدن نوشته خودمون هستم حتی نوشته‌ای که ممکنه خیلی هم کم محتوا باشه<em>)</em></span></span> </span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://abd.manidea.com/blog/archives/98/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
