<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: New HiTechnic Motor PID Block</title>
	<atom:link href="http://www.hitechnic.com/blog/uncategorized/pid-block/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hitechnic.com/blog/uncategorized/pid-block/</link>
	<description>All about HiTechnic products and projects</description>
	<lastBuildDate>Sat, 08 Dec 2012 17:18:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Bot Bench &#187; New Beta NXT-G Blocks from HiTechnic</title>
		<link>http://www.hitechnic.com/blog/uncategorized/pid-block/comment-page-1/#comment-2404</link>
		<dc:creator>Bot Bench &#187; New Beta NXT-G Blocks from HiTechnic</dc:creator>
		<pubDate>Tue, 26 Jul 2011 17:53:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.hitechnic.com/blog/?p=628#comment-2404</guid>
		<description>[...] it.  Gus over at HiTechnic has been a very busy man. Last time he brought us the really awesome PID motor block but this time he went the extra mile and made no less than three new [...]</description>
		<content:encoded><![CDATA[<p>[...] it.  Gus over at HiTechnic has been a very busy man. Last time he brought us the really awesome PID motor block but this time he went the extra mile and made no less than three new [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan</title>
		<link>http://www.hitechnic.com/blog/uncategorized/pid-block/comment-page-1/#comment-2385</link>
		<dc:creator>Jonathan</dc:creator>
		<pubDate>Mon, 18 Jul 2011 15:13:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.hitechnic.com/blog/?p=628#comment-2385</guid>
		<description>Thanks Gus! The Limit Number Block works great! I am bit confused regarding the formula you suggested. I may of misunderstood your suggestion, but what worked best for me was: (OldSetPoint - New Target) --&gt; pass to Limit Number Block --&gt; (OldSetPoint - result of Limit Number Block) --&gt; pass result to PID. 

Thanks again!</description>
		<content:encoded><![CDATA[<p>Thanks Gus! The Limit Number Block works great! I am bit confused regarding the formula you suggested. I may of misunderstood your suggestion, but what worked best for me was: (OldSetPoint &#8211; New Target) &#8211;&gt; pass to Limit Number Block &#8211;&gt; (OldSetPoint &#8211; result of Limit Number Block) &#8211;&gt; pass result to PID. </p>
<p>Thanks again!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gus</title>
		<link>http://www.hitechnic.com/blog/uncategorized/pid-block/comment-page-1/#comment-2361</link>
		<dc:creator>Gus</dc:creator>
		<pubDate>Tue, 12 Jul 2011 16:33:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.hitechnic.com/blog/?p=628#comment-2361</guid>
		<description>Hi Jonathan,
This is by design.  In your case 360 and 0 are the same thing but that is not always true on a robot.  For example, in some cases you may use gears to gear down the motor to activate some arm.  In this case you may want to have a motor range that goes for several revolutions on the motor, for example, you may want the motor to go from 0 to 1000 degrees and then back to 0.

For what you want you may be able to use the new Limit Number block (currently in the beta section of the downloads page).  This block has a feature to wrap a number down to a certain range.  For example 0 to 360, or in this case -180 to 180.  The functionality will require some math but it should look something like this:
Take the value OldSetPoint - New Target and pass it to the Limit Number block and have it wrap around to the range -180 to 180.  Now take that value, add it back to the OldSetPoint and use the result as the new SetPoint for the MotorPID block.  It will now take the shortest path from the current position to the new target position.
Gus</description>
		<content:encoded><![CDATA[<p>Hi Jonathan,<br />
This is by design.  In your case 360 and 0 are the same thing but that is not always true on a robot.  For example, in some cases you may use gears to gear down the motor to activate some arm.  In this case you may want to have a motor range that goes for several revolutions on the motor, for example, you may want the motor to go from 0 to 1000 degrees and then back to 0.</p>
<p>For what you want you may be able to use the new Limit Number block (currently in the beta section of the downloads page).  This block has a feature to wrap a number down to a certain range.  For example 0 to 360, or in this case -180 to 180.  The functionality will require some math but it should look something like this:<br />
Take the value OldSetPoint &#8211; New Target and pass it to the Limit Number block and have it wrap around to the range -180 to 180.  Now take that value, add it back to the OldSetPoint and use the result as the new SetPoint for the MotorPID block.  It will now take the shortest path from the current position to the new target position.<br />
Gus</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan</title>
		<link>http://www.hitechnic.com/blog/uncategorized/pid-block/comment-page-1/#comment-2348</link>
		<dc:creator>Jonathan</dc:creator>
		<pubDate>Thu, 07 Jul 2011 13:53:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.hitechnic.com/blog/?p=628#comment-2348</guid>
		<description>Great Block! The only problem I am having is the block not powering towards the set point in the quickest way possible. In other words, If I reset at 0 degrees, power forward to 90, power to 180, power to 270, and power again to 0, it will go backwards 270 degrees from to 270 to 0 as supposed to going forward 90 degrees. I can &quot;force it to go forward&quot; by powering to negative (-) 0 but it would be great if the block knew which direction it needed to move to get to the set point as quickly as possible. Is there something I can configure to &quot;fix&quot; this behavior?</description>
		<content:encoded><![CDATA[<p>Great Block! The only problem I am having is the block not powering towards the set point in the quickest way possible. In other words, If I reset at 0 degrees, power forward to 90, power to 180, power to 270, and power again to 0, it will go backwards 270 degrees from to 270 to 0 as supposed to going forward 90 degrees. I can &#8220;force it to go forward&#8221; by powering to negative (-) 0 but it would be great if the block knew which direction it needed to move to get to the set point as quickly as possible. Is there something I can configure to &#8220;fix&#8221; this behavior?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: New Beta NXT-G Blocks from HiTechnic &#171; I&#39;d Rather Be Building Robots</title>
		<link>http://www.hitechnic.com/blog/uncategorized/pid-block/comment-page-1/#comment-2313</link>
		<dc:creator>New Beta NXT-G Blocks from HiTechnic &#171; I&#39;d Rather Be Building Robots</dc:creator>
		<pubDate>Wed, 15 Jun 2011 05:32:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.hitechnic.com/blog/?p=628#comment-2313</guid>
		<description>[...] Gus over at HiTechnic has been a very busy man. Last time he brought us the really awesome PID motor block but this time he went the extra mile and made no less than three new [...]</description>
		<content:encoded><![CDATA[<p>[...] Gus over at HiTechnic has been a very busy man. Last time he brought us the really awesome PID motor block but this time he went the extra mile and made no less than three new [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: RobotC: Precise Motor Positioning Tool &#171; World of MindStorms</title>
		<link>http://www.hitechnic.com/blog/uncategorized/pid-block/comment-page-1/#comment-2247</link>
		<dc:creator>RobotC: Precise Motor Positioning Tool &#171; World of MindStorms</dc:creator>
		<pubDate>Fri, 27 May 2011 18:05:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.hitechnic.com/blog/?p=628#comment-2247</guid>
		<description>[...] for a solution, I saw HiTechnic&#8216;s motor PID block &#8211; for NXT-G &#8211; which lets the motor move to an absolute encoder position, without [...]</description>
		<content:encoded><![CDATA[<p>[...] for a solution, I saw HiTechnic&#8216;s motor PID block &#8211; for NXT-G &#8211; which lets the motor move to an absolute encoder position, without [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gus</title>
		<link>http://www.hitechnic.com/blog/uncategorized/pid-block/comment-page-1/#comment-2226</link>
		<dc:creator>Gus</dc:creator>
		<pubDate>Sat, 21 May 2011 14:32:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.hitechnic.com/blog/?p=628#comment-2226</guid>
		<description>The PID Block will not work without the Wait for Completion unless the block is in a loop so that it can repeatedly update the motor power.  When the Wait for Completion is cleared, the block determines the power to use for the motor based on current motor position and speed using the PID controller function and then applies that power to the motor.  In order to continuously control the motor, you will need the block in a fast loop or you need to check the Wait for Completion option which will internally do the same thing.  One reason to use the block in a loop is if you have a changing Set Point since you can update the Set Point every time the block is invoked.  The other reason is if you have multiple motors you want to control in parallel.  In that case, you can have a loop with a PID block for each motor and then use a logic block to see when both motors are At Set Point and then exit</description>
		<content:encoded><![CDATA[<p>The PID Block will not work without the Wait for Completion unless the block is in a loop so that it can repeatedly update the motor power.  When the Wait for Completion is cleared, the block determines the power to use for the motor based on current motor position and speed using the PID controller function and then applies that power to the motor.  In order to continuously control the motor, you will need the block in a fast loop or you need to check the Wait for Completion option which will internally do the same thing.  One reason to use the block in a loop is if you have a changing Set Point since you can update the Set Point every time the block is invoked.  The other reason is if you have multiple motors you want to control in parallel.  In that case, you can have a loop with a PID block for each motor and then use a logic block to see when both motors are At Set Point and then exit</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hunter Chiou</title>
		<link>http://www.hitechnic.com/blog/uncategorized/pid-block/comment-page-1/#comment-2222</link>
		<dc:creator>Hunter Chiou</dc:creator>
		<pubDate>Sat, 21 May 2011 02:37:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.hitechnic.com/blog/?p=628#comment-2222</guid>
		<description>Hi! Thank you for sharing this block. 

I try to write a small program, there are only 3 blocks.

1. PID motor (Port B, set point 45, uncheck Wait for Completion option)
2. Sound Block (Repeat &quot;Good morning&quot;)
3. Wait for NXT button.

The motor will not stop at 45, 

do I misunderstand the meaning of &quot;Wait for Completion&quot;, I also found there is the same situation in NXT-G&#039;s motor Block.</description>
		<content:encoded><![CDATA[<p>Hi! Thank you for sharing this block. </p>
<p>I try to write a small program, there are only 3 blocks.</p>
<p>1. PID motor (Port B, set point 45, uncheck Wait for Completion option)<br />
2. Sound Block (Repeat &#8220;Good morning&#8221;)<br />
3. Wait for NXT button.</p>
<p>The motor will not stop at 45, </p>
<p>do I misunderstand the meaning of &#8220;Wait for Completion&#8221;, I also found there is the same situation in NXT-G&#8217;s motor Block.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gus</title>
		<link>http://www.hitechnic.com/blog/uncategorized/pid-block/comment-page-1/#comment-2204</link>
		<dc:creator>Gus</dc:creator>
		<pubDate>Tue, 17 May 2011 17:26:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.hitechnic.com/blog/?p=628#comment-2204</guid>
		<description>First of all, the best way to get support is via the online support page.

On the top of the HiTechnic downloads page for NXT-G blocks, there are instructions on how to install the block into the LEGO software.  You will need to do this in order for the block to appear on one of the block palettes.  Once installed, you can drag the block into your program and use it the same way as any other block.  Note that once the block is in the program, you can hover the mouse over the block for a couple of seconds and then get a context help link in the bottom right corner.  Click on More Help to see the full block help file.</description>
		<content:encoded><![CDATA[<p>First of all, the best way to get support is via the online support page.</p>
<p>On the top of the HiTechnic downloads page for NXT-G blocks, there are instructions on how to install the block into the LEGO software.  You will need to do this in order for the block to appear on one of the block palettes.  Once installed, you can drag the block into your program and use it the same way as any other block.  Note that once the block is in the program, you can hover the mouse over the block for a couple of seconds and then get a context help link in the bottom right corner.  Click on More Help to see the full block help file.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sikko</title>
		<link>http://www.hitechnic.com/blog/uncategorized/pid-block/comment-page-1/#comment-2202</link>
		<dc:creator>sikko</dc:creator>
		<pubDate>Tue, 17 May 2011 16:20:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.hitechnic.com/blog/?p=628#comment-2202</guid>
		<description>Hey i have download it but i dont no what to do next ie there sombady hoe nows? becaise i dont have it in my nxt-g program and i realy heve download it!

 
Hoi ik hab het gedownload maar ik weet niet wat ik niu moet doen is er iemand die dat weet? want ik heb het nu nietn in mijn nxt-g maar ik weet zeker dat ik het heb gedownload!</description>
		<content:encoded><![CDATA[<p>Hey i have download it but i dont no what to do next ie there sombady hoe nows? becaise i dont have it in my nxt-g program and i realy heve download it!</p>
<p>Hoi ik hab het gedownload maar ik weet niet wat ik niu moet doen is er iemand die dat weet? want ik heb het nu nietn in mijn nxt-g maar ik weet zeker dat ik het heb gedownload!</p>
]]></content:encoded>
	</item>
</channel>
</rss>
