I recently spent quite a lot of time researching what it would take to implement an artificial nose in an robot and looked into the commercial approaches to artificial noses. There are a number of different approaches, some using semiconductor devices that employ a field that charges odor particles and sort them out employing a secondary field that detects the charges. There are conducting polymers and non-conducting composite polymers that they dope to make them conduct, there are quartz crystal microbalances for detecting particle mass, surface acoustic wave analysis, and mass spectrometer approaches. None of which appear practical for continuous use in a robot.
I did run across an interesting video from a Microsoft tech that's available on Youtube employing a fairly simple and practical approach ().
The draw back is that it's machine learning and fixed upon completion of training. It requires the introduction of sample scents to be learned.
When it comes to the number of odors a human nose can recognize it is commonly quoted to be 10,000 different odors. This number turned out to have originated in the perfume industry and isn't accurate. I've seen claims that humans may be able to distinguish as many as 100,000 different odors. There's no consensus among researchers for the actual number and it could vary a lot within the population.
It's claimed that there are 350-400 different odor receptor types (based on the genotyping of 7 proteins that make up the receptors). 350-400 receptor types strikes me as extreme for such a small number of odors (10-100K) when compared to the 16.7 million colors than can be distinguished with just 3 photoreceptor types or in the case of audition, 20K frequencies with just 1 type of distributed hair cell receptor. When you consider that an odor consists of collection of different chemicals (coffee is said to consist of 1100 different volatile molecules) and you combine responses from multiple receptors, you are drawn to consider the factorial of 350 or 400 and the number of potential combinations the nose could detect is simply enormous - probably far larger than the actual number of volatile organic molecules that exist.
I suppose all this boils down to the bandwidth or number of different odors you hope to detect. The most practical approach is a gas chromatic approach that sorts the molecules according to size. You could take a long inert nonconductive tube, pack it with assorted sizes of hydrophobic nonconductive powder, insert juxtaposed pins as electrodes, coil it up like a cochlea to save room, and connect the electrodes to a neural net to detect combinatorial patterns that exist with each time slice. You'll need some sort of bellows to make it inhale and exhale (retronasal aromas are different from orthonasal) for two reasons. 1. to clear the tube of odorants between breaths, and 2. to replicate the sequential ordering of responses for inhalation vs exhalation. Also, to prevent buildup of moisture that can gum up the system. It would be wise to employ a desiccant in the intake for the tube that could be replaced occasionally (silica gel or alum).
Odorant Classes
Carboxylic Acids, Methyl and Ethyl Esters
Primary Alcohols, Aldehydes, and Phenols
Aliphatic Hydrocarbon Chains
Aliphatic Esters
Aromatics with O groups, High concentrations of Ketones
Aromatic Hydrocarbons
Methyl-substituted Bicyclic Compounds
Highly Water Soluble Compounds
Broadly Responsive
Chemotopic progression with increasing carbon number