gfxgfx
 
Please login or register.

Login with username, password and session length
logo
 
gfx gfx
gfx
19851 Posts in 1275 Topics by 5182 Members - Latest Member: charbuild April 16, 2024, 06:41:25 AM
*
gfx* Home | Help | Search | Login | Register | gfx
gfx
Breaktru Forum  |  eCigarette Forum  |  Modding  |  Topic: REGULATED mosfet build with Arduino PWM
gfx
gfxgfx
 

Author Topic: REGULATED mosfet build with Arduino PWM  (Read 18625 times)

0 Members and 1 Guest are viewing this topic.

Offline scripto23

  • Jr. Member
  • **
  • Joined: Sep 2014
  • Location: USA
  • Posts: 8
  • Karma: +0/-0
REGULATED mosfet build with Arduino PWM
« on: September 23, 2014, 05:07:22 PM »
I have previously designed and built an Arduino controlled Raptor mod and in the process I wondered if it could be made simpler, cheaper, and more compact. I wanted to replace the entire Raptor chip with a n-mosfet that could be controlled via PWM from an Arduino pin to vary the wattage.

The main hurdle is minimizing switching losses. To accomplish this I needed a mosfet with a low Gate Charge (Qg), giving low rise and fall times, to switch the mosfet on and off as fast as possible, thus keeping it in the linear zone for the least amount of time. Of course it also needs a very low Rds on.

 I also needed a push-pull driver for the mosfet which would run a +/- supply with good current capability so I could shove +V into the gate to turn it on, -V into the gate to turn it off as fast and as hard as possible, again to keep it in the linear zone for the least amount of time.

 After some research I designed the following schematic. It is running off of a 3S Li-po battery which will provide ~11v. 10v is listed in the datasheet of the mosfet and driver as being the voltage at which it runs the most efficiently.


The full build will include:

-Arduino
-PSMN1R0-30YLDX, N channel MOSFET http://ca.mouser.com/Search/ProductDetail.aspx?R=PSMN1R0-30YLDXvirtualkey66800000virtualkey771-PSMN1R0-30YLDX
-MIC4420, MOSFET driver http://ca.mouser.com/Search/ProductDetail.aspx?R=MIC4420ZTvirtualkey51430000virtualkey998-MIC4420ZT
-MCP1702 voltage regulator (5v for Arduino power)
-11.1v Li-po battery http://hobbyking.com/hobbyking/store/__21334__ZIPPY_Compact_1000mAh_3S_25C_Lipo_Pack.html
-1 inch OLED display
-input/power/fire buttons, reverse polarity fet, voltage divider, etc.

What I would like would be if the intelligent people of this great community could take a look at what I am trying to do and give me feedback.

Here is the schematic of just the mosfet, driver, battery, and 510.

Offline CraigHB

  • PV Master
  • *******
  • Joined: Nov 2011
  • Location: Reno, Nevada
  • Posts: 2023
  • Karma: +246/-1
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #1 on: September 23, 2014, 06:34:21 PM »
Using PWM in ridiculously easy.  But then it's PWM. 

All you need to do is simply drive a low side N-Channel switch with one of the MCU's I/O pins assuming a 5V supply.  Since switching frequency is typically low, usually under 100Hz, there's no need to be concerned about driving the MOSFET gate with a low impedance source.  Granted you reduce transitional losses by driving the transistor harder (using a low impedance source), but the one and only loss in the regulator is the MOSFET itself.  Losses are going to be much lower than you would see with a DC-DC converter. 

It wouldn't be a bad idea to use a gate driver to minimize MOSFET losses during on-off transitions, but you could probably get away with not using one if you keep switching frequencies low.  There's really no reason to run your frequency any higher than 100Hz, though you can if you want.  If you run it a lot higher, you'll need a gate driver and you might get into considerable switching losses.

In terms of calculations, power loss due to the MOSFET is going to be on-state resistance times current squared times duty cycle which should not be more than 1 or 2% of the load assuming proper MOSFET selection.  Switching losses are switching frequency times gate charge times gate voltage so even with a big gate charge of something like 200nC, you're looking at loss there in the micro-Watts.  Efficiency should be no less than 98% worst case.  2% loss is nothing to get excited over.  Most converters can't do better than 90% at maximal loads.


« Last Edit: September 23, 2014, 10:52:48 PM by CraigHB »

Offline scripto23

  • Jr. Member
  • **
  • Joined: Sep 2014
  • Location: USA
  • Posts: 8
  • Karma: +0/-0
Re: REGULATED mosfet build with Arduino PWM
« Reply #2 on: September 23, 2014, 09:23:40 PM »
For the Arduino analogWrite() function, the PWM frequency on most pins is ~490 Hz (however, it's ~980 Hz for pins 5 and 6). I think it can be set lower to provide better efficiency, definitely under 100Hz. Even if the heater coils visibly “flicker” from a low PWM frequency it is really not a problem compared to PWM of leds or some such.

So you think the parts I've selected should work well? What will the efficiency be compared to something like the Raptor?

Offline CraigHB

  • PV Master
  • *******
  • Joined: Nov 2011
  • Location: Reno, Nevada
  • Posts: 2023
  • Karma: +246/-1
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #3 on: September 23, 2014, 10:38:09 PM »
LEDs have much quicker turn off and turn on time than a heating coil so they are more sensitive to PWM frequency.  The cool down time for a heating coil is relatively long so you should not be able to sense the PWM frequency with an atomizer even when as low as 20Hz.  Though if you're concerned about it, just use a gate driver and run PWM at the default frequency you mentioned.  That should be plenty high enough. 

The MOSFET looks good, but I can't identify the part labeled MIC4420M.  It's drawn as an op-amp which you could use, it does have lower impedance than one of the MCUs I/O pins which are about 50 Ohms.  An op-amp is usually 10 or 20 Ohms.  There's better chips than op-amps available to drive a MOSFET, they are listed as MOSFET drivers or gate drivers.  They typically have output impedance 1 to 3 Ohms which is what you want for driving a MOSFET.

In any case, the PWM regulator will have very high efficiency.  Like I said, DC-DC converters don't do much better than 90% at maximal loads.  A PWM regulator should not do less than 98% under maximal loads.

Offline scripto23

  • Jr. Member
  • **
  • Joined: Sep 2014
  • Location: USA
  • Posts: 8
  • Karma: +0/-0
Re: REGULATED mosfet build with Arduino PWM
« Reply #4 on: September 24, 2014, 09:40:17 AM »
Thanks for the advice. I really thought it would be more complicated than that. The MIC4420 is a dedicated mosfet driver. Here's the mouser link: http://www.mouser.com/Search/m_ProductDetail.aspx?Micrel/MIC4420YM/&qs=sGAEpiMZZMvQcoNRkxSQkhw4FYdqpzaLsDoes6is6HY=

Offline CraigHB

  • PV Master
  • *******
  • Joined: Nov 2011
  • Location: Reno, Nevada
  • Posts: 2023
  • Karma: +246/-1
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #5 on: September 24, 2014, 03:42:15 PM »
Didn't think to look up that part on Mouser, usually just Google the part number and it comes up, didn't come up on that one.  Anyway, looks like a good part to use, 6A is a powerful driver, has about 1.5 Ohms output impedance which is good.  Should allow you to use pretty much any MOSFET you like at any speed you like, but it's not really an isue since that MOSFET only has 50nC gate charge which is plenty low enough.

Offline norcalreballer

  • Sr. Member
  • ****
  • Joined: Jul 2014
  • Location: USA
  • Posts: 63
  • Karma: +4/-0
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #6 on: September 29, 2014, 01:19:01 AM »
Hi, my first post here.  :)  I'm working on an MCU mod as well using PWM.  Teensy 3.1 with more advanced display.  Switching frequency will be much higher than 100hz, I'm hoping.  No one uses proper voltage references for the ADC from the MCU mods I've seen on here.  Why is that?  Accuracy could be within  +/-.05-1% or even better vs just using 5v as a reference.  That's one major change I'm making with mine.  That and 4 wire resistance measurement.  Just started talking with scripto23.  This is all really cool stuff.

I'm completely new to all this, so it's harder for me, haha! 



« Last Edit: September 29, 2014, 01:25:02 AM by norcalreballer »

Offline CraigHB

  • PV Master
  • *******
  • Joined: Nov 2011
  • Location: Reno, Nevada
  • Posts: 2023
  • Karma: +246/-1
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #7 on: September 29, 2014, 04:41:42 PM »
Hello norcalreballer, welcome to the forum.

Yes using a reference can greatly improve ADC accuracy.  When using the positive rail as a reference, ADC accuracy is only as good as the accuracy of the LDO powering the rail.  Though that's not necessarily inaccurate.  For the last design I did, I used the positive rail as a reference and I'm using an LDO with 1% accuracy.  It's a good one I selected for its accuracy among other things.  Most LDOs are 2% or 5%.

I plan to use a reference in the next design mainly to tighten up the ADC range and I've selected one with 1/10% tolerance.  That model has a part number selection that ranges from 1/10 to 1%,  I have some 1/10% ones I got as samples, but they're pricey.  If I had to buy them, I'd probably use the 1/2% or 1% ones which are fairly cheap.

ADC accuracy is only part the accuracy issue though.  You also have the accuracy of your sensors.  Those are generally not better than 1% and 5% would not be unusual.  Those errors add so even if your ADC is 1/10% the larger error of the sensor is going to make that rather moot.  In any case, sensors typically have to be calibrated in code to cover any inaccuracies.  The amount of error that has to be calibrated out becomes somewhat immaterial.

Offline norcalreballer

  • Sr. Member
  • ****
  • Joined: Jul 2014
  • Location: USA
  • Posts: 63
  • Karma: +4/-0
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #8 on: September 29, 2014, 06:21:58 PM »
Ahh, very nice.  I knew there was some reason I didn't see you guys using an analog reference. I'm using an lm4040 2.5v on the teensy 3.1.  I believe the datasheet says .05% for the 2.5v one and it's running within that range.  Super cheap.  Probably better choices, but I'm happy with it so far.  I really wasn't trying to jack the thread.  Wanted to say hi and I think what you guys do is really cool. :)  Have a good day everyone.

EDIT:One thing I wanted to mention was reading very low resistance.  I didn't see anyone using 4 wire measurement.  I have an lt3092 constant current source set at 10ma.  It seems to read very well. :)  I have to work out the code for it, but it's reading well withing 1% range.

@CraigHB Which sensors are you talking about? Guessing hall effect sensor or something? 
« Last Edit: September 29, 2014, 06:29:55 PM by norcalreballer »

Offline CraigHB

  • PV Master
  • *******
  • Joined: Nov 2011
  • Location: Reno, Nevada
  • Posts: 2023
  • Karma: +246/-1
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #9 on: September 30, 2014, 12:02:47 PM »
Not sure what you mean by "4 wire".  If you mean using a voltage divider to measure atomizer resistance, that's an option.  It's not my preferred method of finding current, but it's a reasonable solution.  It's a bit complicated since you need to measure atomizer resistance before powering the atomizer then calculate current based on that.  It's also a static measurement so it's not possible to sense changes under load.

For current sensing, I use an op-amp and current sense resistor along with a filter.  Some MCU's have internal milli-amp references available to eliminate the op-amp and some have built-in op-amps.  The one I use has neither so no savings there for me.  This type of sensor can have a lot of error but they're most flexible.  The amount error depends on the op-amp and then there's the error of the current sense resistor.

There's a limited range of hall effect current sensor chips available.  Some people are using those.  They have very good accuracy and low insertion impedance, but they're not as flexible and they're more sensitive to electrically noisy environments.

For voltage sensing I simply use a divider and filter.  A divider is used to keep maximal input signals under the reference voltage.  The loss of signal gain is compensated in code.

Sensing is more tricky with PWM since you have to time samples toward the end of the pulse.  You always have to filter ADC inputs and with PWM, you need a filter time constant low enough to settle before you take the sample and high enough to filter the noise.  This is also why a lower PWM frequency is better, you can filter sense inputs more heavily without introducing error in your samples.

Offline scripto23

  • Jr. Member
  • **
  • Joined: Sep 2014
  • Location: USA
  • Posts: 8
  • Karma: +0/-0
Re: REGULATED mosfet build with Arduino PWM
« Reply #10 on: September 30, 2014, 12:08:04 PM »
Not sure what you mean by "4 wire".

4 wire resistance measuring is a method of obtaining accurate resistance reading at very low levels of resistance. See this video for a better explanation (all the Afrotechmod videos are awesome): https://www.youtube.com/watch?v=0vMvCVyOp9g

Also if you're using hall effect sensors you have to be careful if you are also using magnets in your box.

Offline norcalreballer

  • Sr. Member
  • ****
  • Joined: Jul 2014
  • Location: USA
  • Posts: 63
  • Karma: +4/-0
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #11 on: September 30, 2014, 12:21:56 PM »
That video is where I learned about 4 wire(kelvin)measurement.  What are you guys using for filters on the voltage dividers for voltage measurement? 

Offline CraigHB

  • PV Master
  • *******
  • Joined: Nov 2011
  • Location: Reno, Nevada
  • Posts: 2023
  • Karma: +246/-1
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #12 on: September 30, 2014, 12:34:45 PM »
Oh okay, I saw what that was right off.  I use that method often to measure milli-Ohm resistances on the bench.  The alternative is to use a milli-Ohm meter, but I don't spend the money on one since it's simple enough to do it with a known current.  Though, a milli-Ohm meter would be handy and doesn't require the circuit element under measurement to conduct a good amount of current.

In any case, using that method is the same as what I mentioned about sensing resistance with a divider.  You need a known current.  You can do that with a current regulator which is more costly in terms of part count or you can do it with a voltage divider which is more simplistic.  Though like I said, it's a static measurement so it's limited.  If something changes under load, the code will be none the wiser.  There's better ways to measure current IMO.

Filters are simply an RC circuit, terribly simple things.  However, you end up with a time constant that imposes an amount of time for the reading to settle.  It's possible to run without one using very careful PCB design which can be necessary for high speed stuff like motor control.  Filtering can optionally be done in code.  For an e-cig, the easiest solution is to throw an RC circuit on there and be done with it.  ADCs are tempermental things really.  You'll get jumpy readings without some kind of filter, either hardware of software.

Offline norcalreballer

  • Sr. Member
  • ****
  • Joined: Jul 2014
  • Location: USA
  • Posts: 63
  • Karma: +4/-0
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #13 on: September 30, 2014, 12:43:34 PM »
The current source I'm using should stay a solid 10ma +/- 1%.  I haven't tested it under load yet.  I am using an rc low pass filter for the atomizer voltage to smooth out the signal so I can read it with the ADC.  I didn't think to use one for the batteries, though.   Around what values are you using for the batteries? I already soldered my dividers on the little board, but there's room. 

When you say filter in software, do you mean with averaging? 

Offline CraigHB

  • PV Master
  • *******
  • Joined: Nov 2011
  • Location: Reno, Nevada
  • Posts: 2023
  • Karma: +246/-1
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #14 on: September 30, 2014, 01:10:59 PM »
Yes, averaging in code.  Turns out it behaves similarly to an RC filter, not exactly but close enough to call it the same.  Specifically, an RC filter integrates, but you could do that in code as well.  Averaging does the job well enough and it's similar to the integration an RC filter does.

For an RC filter to work, you need resistance in front of the cap which is always the case with MCU inputs anyway.  At least it should be.  It's good practice to put a resistor inline with any MCU analog or digital input connected to a low impedance source (like the battery).  Rather it's pretty much required.  I've had lots of problems end up because I overlooked that.

The optimum capacitance for an RC filter depends on the resistance value.  For filtering ADC inputs a 10k resistor with a 100n capacitor will work well.  That provides a time constant of 1mS which means the signal will settle mostly in about a hundredth of a second.  For a higher sample rate, that might need to be lower.  I've found a time constant as low as 100uS works well enough.  BTW, the time constant is simply resistance times capacitance.  A signal is pretty much settled after 10 time constants.

Offline Visus

  • PV Master
  • *******
  • Joined: Oct 2013
  • Location: Nexxus
  • Posts: 929
  • Karma: +62/-0
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #15 on: September 30, 2014, 02:33:09 PM »
Really cool way of making an audio amplifier but since holding the unit in our hands,  cooling the fets will it be an insane amounts of heat sinking?

Just wondering  :Thinking:

Offline norcalreballer

  • Sr. Member
  • ****
  • Joined: Jul 2014
  • Location: USA
  • Posts: 63
  • Karma: +4/-0
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #16 on: September 30, 2014, 02:39:39 PM »
Wow, you rock!  I really appreciate the input. Do you have a diagram of the voltage divider with the RC filter?  I know how wire both, but I'm not sure of the best way to wire it.  Put the voltage from the batteries throught the filter then through the divider or maybe just add a cap in the circuit like this?


When you say put a resistor inline with the analog or digital input, you mean add another resistor from the pin before the divider/filter?

On a side note, I'm using 1k and 220r resistors for my voltage divider bringing the voltage below the voltage reference.  I see many people use higher value resistor.  Think I should up it?

@Visus  I think it depends on which mosfet, how high of frequency and the actual load we're putting on it. Time will tell, haha!


Offline CraigHB

  • PV Master
  • *******
  • Joined: Nov 2011
  • Location: Reno, Nevada
  • Posts: 2023
  • Karma: +246/-1
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #17 on: September 30, 2014, 03:15:39 PM »
Yes, that simple. 

Since you are going to be sampling voltage probably at the same rate as the PWM frequency that can be a consideration for your filter.  In the circuit shown, your time constant is R1||R2*C1.  That works out to 6.67k resistance for a time constant of 667uS.  If you run a PWM frequency much higher than 100Hz, you could introduce error from your filter.  To use a higher PWM frequency, you would need to reduce the time constant.

The value you use for resistors depends on the allowable current flow and the reduction of gain required for your ADC reference.  If you want to decrease the time constant of the filter, simply reduce the capacitance value.  For example, use the circuit shown, but with a 10n cap instead of a 100n cap.  In any case, the resistance you show is reasonable, probably something I would select myself.

When I say a resistor should be inline with an MCU input pin connected to a low impedance source, the divider you show meets that requirement.  There's no power path to that pin without resistance in front of it.

Offline norcalreballer

  • Sr. Member
  • ****
  • Joined: Jul 2014
  • Location: USA
  • Posts: 63
  • Karma: +4/-0
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #18 on: September 30, 2014, 04:01:56 PM »
I can't thank you enough. :)   Did you mean the resistor values in the diagram look good to you?
« Last Edit: September 30, 2014, 04:15:55 PM by norcalreballer »

Offline CraigHB

  • PV Master
  • *******
  • Joined: Nov 2011
  • Location: Reno, Nevada
  • Posts: 2023
  • Karma: +246/-1
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #19 on: October 01, 2014, 07:34:25 PM »
Yes, those are values I would probably use myself. 

I typically set 10k as my base resistance than set the other side of the divider from that.  In your case, divider gain is 10k over 30k for 1/3.  At 9V output that's 3V on the controller ADC pin which would be reasonable assuming a 3V reference.  Typically, you want to set your ADC input range proportionally to the range of what you are sensing to maximize ADC resolution.

Offline norcalreballer

  • Sr. Member
  • ****
  • Joined: Jul 2014
  • Location: USA
  • Posts: 63
  • Karma: +4/-0
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #20 on: October 02, 2014, 01:40:26 AM »
I promise I will create my own thread...  This is a hijacking.  Sorry, OP.  Want to put something decent together, but super busy this week.

@CraigHB, Makes sense. :)  What do you think good values would be for 732hz?  That's the frequency I'm hoping to switch the mosfet at.  When we use the voltage divider, is it still the same as a low pass filter?  Just use R1||R2 as the resistor value?  This is where I'm having some trouble. I understand how to calculate the time constant now, but still not 100% on how it correlates to this application. 

Lets take 100hz PWM signal.  If the filter in the diagram can respond to change every 667uS and there's 10000uS in a second, it can only respond to change 15 times in a second, but the frequency is higher than this.  I was messing around with this tool a bit when I first tried the low pass filter with one resistor.  In my very limited(10 minutes)with my O-scope, it seemed to smooth out the signal very well without accounting for settling time.

http://sim.okawa-denshi.jp/en/CRlowkeisan.htm

« Last Edit: October 02, 2014, 01:44:14 AM by norcalreballer »

Offline CraigHB

  • PV Master
  • *******
  • Joined: Nov 2011
  • Location: Reno, Nevada
  • Posts: 2023
  • Karma: +246/-1
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #21 on: October 02, 2014, 06:26:35 AM »
It takes about 10 time constants for an RC filter to settle on an input voltage.  It's not exactly 100% after 10 time constants but it's pretty close.  If you want to know the difference exactly, take the inverse natural log of -10 then multiply by peak voltage.  That's the amount of voltage the capacitor will be short.  You'll find it's a very small number.

The filter time constant you require for your output sensing ADC depends on the frequency and minimal duty cycle of the PWM driver. 

So for example, a filter with a time constant of 100uS takes at least 1mS to stabilize on any change in voltage.  You need that much time for the capacitor to fully charge.  A 100Hz PWM signal at 10% duty cycle provides 1ms of "on" time.

A filter with a time constant of 1ms takes 10mS to stabilize on any change in voltage.  A PWM frequency at 100Hz goes from zero to peak voltage every 10mS so the reading will not be valid unless duty cycle is 100%.  There's not enough time for the capacitor to fully charge. 

With a frequency close to 1kHz, there's only 100uS of on time at 10% duty cycle.  You would need a very small time constant, like 10uS.  That gets into an area where a filter starts losing its ability to reject noise.  Though if your minimal duty cycle is higher you can use a bigger time constant.  You can also run under 10 time constants as a minimum.  With 5 time constants as a minimum, you lose about 1% of your reading, probably acceptable.

There's also consideration as to when you take the sample.  You're cutting into the time it takes for the capacitor to charge if you take it too early in the PWM pulse.  Generally ADCs are pretty fast on MCUs, but it can vary.  It shouldn't take more than 10uS and 2uS would be more typical.  There should be no issue, but for a higher PWM frequency it can be a consideration.

Filtering in code may be a better option for a higher PWM frequency.  In that case you can sample during the entire pulse at maximal ADC sample rate then take an average when it's done.


« Last Edit: October 02, 2014, 07:22:05 AM by CraigHB »

Offline norcalreballer

  • Sr. Member
  • ****
  • Joined: Jul 2014
  • Location: USA
  • Posts: 63
  • Karma: +4/-0
  • Gender: Male
Re: REGULATED mosfet build with Arduino PWM
« Reply #22 on: October 02, 2014, 09:57:29 AM »
Awesome!  :thankyou:

Offline scripto23

  • Jr. Member
  • **
  • Joined: Sep 2014
  • Location: USA
  • Posts: 8
  • Karma: +0/-0
Re: REGULATED mosfet build with Arduino PWM
« Reply #23 on: October 02, 2014, 10:08:09 AM »
Quote
I promise I will create my own thread...  This is a hijacking.  Sorry, OP.

Not at all! We're doing almost the exact same thing and you are asking a lot of the same questions I have had. I've been busy with work and also waiting for some parts to come in, so I haven't been able to do too much development, but I am following this thread very closely and am also very grateful to the people contributing and answering questions (looking at you CraigHB  :applaude: )

Breaktru Forum  |  eCigarette Forum  |  Modding  |  Topic: REGULATED mosfet build with Arduino PWM
 

gfxgfx
gfx gfx
Powered by MySQL Powered by PHP Valid XHTML 1.0! Valid CSS!